From c269a05e957845553b8ce528747ad88f37936d7e Mon Sep 17 00:00:00 2001 From: Fr11zy Date: Wed, 19 Jun 2024 12:02:03 +0300 Subject: [PATCH 1/3] Add buuton MainMenu --- include/constants.h | 15 ++++++++++++++- include/db_utils.h | 21 +++++++++++++++++++++ src/main.cpp | 9 +++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/include/constants.h b/include/constants.h index e4e3ab7..934be56 100644 --- a/include/constants.h +++ b/include/constants.h @@ -64,10 +64,12 @@ constexpr char create_group[] = "create_group"; constexpr char delete_group[] = "delete_group"; constexpr char edit_group[] = "edit_group"; constexpr char make_discipline[] = "make_discipline"; +constexpr char main_menu[] = "main_menu"; const std::unordered_set commands({start, create_group, delete_group, edit_group, - make_discipline}); + make_discipline, + main_menu}); } // namespace commands namespace db_queries {} @@ -86,6 +88,7 @@ constexpr char dontAddDescription[] = "Не добавлять описание" constexpr char createGroup[] = "Создать группу"; constexpr char editGroup[] = "Изменить имя группы ✏️"; constexpr char deleteGroup[] = "Удалить группу"; +constexpr char mainMenu[] = "Главное меню."; } // namespace button_names namespace button_data { @@ -97,6 +100,7 @@ constexpr char dontAddDescription[] = "dontAddDescription"; constexpr char createGroup[] = "createGroup"; constexpr char editGroup[] = "editGroup"; constexpr char deleteGroup[] = "deleteGroup"; +constexpr char mainMenu[] = "mainMenu"; } // namespace button_data namespace standard_text { @@ -170,6 +174,14 @@ TgBot::InlineKeyboardButton::Ptr deleteGroup(new TgBot::InlineKeyboardButton{ button_names::deleteGroup, {}, button_data::deleteGroup}); const TgBot::InlineKeyboardMarkup::Ptr deleteGroupKeyboard( new TgBot::InlineKeyboardMarkup); +//main menu +TgBot::InlineKeyboardButton::Ptr mainMenu(new TgBot::InlineKeyboardButton{ + button_names::mainMenu, + {}, + button_data::mainMenu +}); +const TgBot::InlineKeyboardMarkup::Ptr mainMenuKeyboard( + new TgBot::InlineKeyboardMarkup); void init_keyboards() { making_discipline_keyboard->inlineKeyboard = {{std::move(make_discipline)}}; @@ -183,6 +195,7 @@ void init_keyboards() { createGroupKeyboard->inlineKeyboard = {{std::move(createGroup)}}; deleteGroupKeyboard->inlineKeyboard = {{std::move(deleteGroup)}}; editGroupKeyboard->inlineKeyboard = {{std::move(editGroup)}}; + mainMenuKeyboard->inlineKeyboard = {{std::move(mainMenu)}}; } } // namespace keyboards diff --git a/include/db_utils.h b/include/db_utils.h index 1ed1245..c0ba71a 100644 --- a/include/db_utils.h +++ b/include/db_utils.h @@ -23,6 +23,27 @@ void init_conn() { } void close_conn() { sqlite3_close(db_conn); } + +TgBot::InlineKeyboardMarkup::Ptr make_MainMenuKeyboard(TgBot::Bot &bot) { + // открываем бд + + // Создаем запрос который даст нам имена всех груп пользователя + // В соответствии с запросом берем из бд имена и конвертируем их в кнопки + const TgBot::InlineKeyboardMarkup::Ptr MenuKeyboard(new TgBot::InlineKeyboardMarkup); + /* + while (sqlite3_step(statement) == SQLITE_ROW) { + TgBot::InlineKeyboardButton::Ptr GroupButton(new TgBot::InlineKeyboardButton); + GroupButton->text = reinterpret_cast(sqlite3_column_text(statement, 1)); + GroupButton->callbackData= std::to_string(sqlite3_column_int(statement, 0)); + MenuKeyboard->inlineKeyboard = {{std::move(GroupButton)}}; + }*/ + + MenuKeyboard->inlineKeyboard = {{std::move(keyboards::createGroup)}}; + + // закрываем бд + return MenuKeyboard; +} + } // namespace db #endif // INCLUDE_DB_UTILS_H_ diff --git a/src/main.cpp b/src/main.cpp index 54467c2..0c0c3f7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -23,6 +23,7 @@ int main() { keyboards::discipline_confirmation_keyboard; const auto& dont_add_description_keyboard = keyboards::dont_add_description_keyboard; + const auto& mainMenuKeyboard = keyboards::mainMenuKeyboard; db::init_conn(); @@ -70,9 +71,17 @@ int main() { userId, messages::checkDiscipline, nullptr, nullptr, discipline_confirmation_keyboard); setState(userId, State::NONE); + } else if (query->data == button_data::mainMenu) { + TgBot::InlineKeyboardMarkup::Ptr MenuKeyboard = db::make_MainMenuKeyboard(bot); + bot.getApi().sendMessage(query->message->chat->id, messages::MenuTitle, nullptr, nullptr, MenuKeyboard); } }); + bot.getEvents().onCommand( + commands::main_menu,[&bot, mainMenuKeyboard](const TgBot::Message::Ptr& message){ + bot.getApi().sendMessage(message->chat->id, messages::MenuTitle, nullptr, nullptr, mainMenuKeyboard); + }); + bot.getEvents().onCommand( commands::start, [&bot](const TgBot::Message::Ptr& message) { if (message->chat->type == TgBot::Chat::Type::Private) { From 8b60281dcf9580a5682a6652c7681aaa93533f19 Mon Sep 17 00:00:00 2001 From: Fr11zy Date: Wed, 19 Jun 2024 12:06:48 +0300 Subject: [PATCH 2/3] fix format --- include/constants.h | 12 ++++------ include/db_utils.h | 14 +++++++----- src/main.cpp | 53 ++++++++++++++++++++++----------------------- 3 files changed, 38 insertions(+), 41 deletions(-) diff --git a/include/constants.h b/include/constants.h index 934be56..cbdc70d 100644 --- a/include/constants.h +++ b/include/constants.h @@ -51,7 +51,7 @@ constexpr char welcomeMessage[] = "свою группу и добавь дисциплину"; constexpr char createdGroup[] = "✨Группа создана!✨"; constexpr char deletedGroup[] = "Группа удалена"; - constexpr char enterGroupName[] = "Введите название группы:"; +constexpr char enterGroupName[] = "Введите название группы:"; constexpr char enterNewGroupName[] = "Введите новое название группы:"; constexpr char groupNameSaved[] = "Название группы сохранено ✅"; constexpr char newGroupNameSaved[] = "Новое имя группы сохранено ✅"; @@ -68,8 +68,7 @@ constexpr char main_menu[] = "main_menu"; const std::unordered_set commands({start, create_group, delete_group, edit_group, - make_discipline, - main_menu}); + make_discipline, main_menu}); } // namespace commands namespace db_queries {} @@ -174,12 +173,9 @@ TgBot::InlineKeyboardButton::Ptr deleteGroup(new TgBot::InlineKeyboardButton{ button_names::deleteGroup, {}, button_data::deleteGroup}); const TgBot::InlineKeyboardMarkup::Ptr deleteGroupKeyboard( new TgBot::InlineKeyboardMarkup); -//main menu +// main menu TgBot::InlineKeyboardButton::Ptr mainMenu(new TgBot::InlineKeyboardButton{ - button_names::mainMenu, - {}, - button_data::mainMenu -}); + button_names::mainMenu, {}, button_data::mainMenu}); const TgBot::InlineKeyboardMarkup::Ptr mainMenuKeyboard( new TgBot::InlineKeyboardMarkup); diff --git a/include/db_utils.h b/include/db_utils.h index c0ba71a..9cdd125 100644 --- a/include/db_utils.h +++ b/include/db_utils.h @@ -24,18 +24,20 @@ void init_conn() { void close_conn() { sqlite3_close(db_conn); } -TgBot::InlineKeyboardMarkup::Ptr make_MainMenuKeyboard(TgBot::Bot &bot) { +TgBot::InlineKeyboardMarkup::Ptr make_MainMenuKeyboard(const TgBot::Bot &bot) { // открываем бд // Создаем запрос который даст нам имена всех груп пользователя // В соответствии с запросом берем из бд имена и конвертируем их в кнопки - const TgBot::InlineKeyboardMarkup::Ptr MenuKeyboard(new TgBot::InlineKeyboardMarkup); + const TgBot::InlineKeyboardMarkup::Ptr MenuKeyboard( + new TgBot::InlineKeyboardMarkup); /* while (sqlite3_step(statement) == SQLITE_ROW) { - TgBot::InlineKeyboardButton::Ptr GroupButton(new TgBot::InlineKeyboardButton); - GroupButton->text = reinterpret_cast(sqlite3_column_text(statement, 1)); - GroupButton->callbackData= std::to_string(sqlite3_column_int(statement, 0)); - MenuKeyboard->inlineKeyboard = {{std::move(GroupButton)}}; + TgBot::InlineKeyboardButton::Ptr GroupButton(new + TgBot::InlineKeyboardButton); GroupButton->text = reinterpret_cast(sqlite3_column_text(statement, 1)); GroupButton->callbackData= + std::to_string(sqlite3_column_int(statement, 0)); MenuKeyboard->inlineKeyboard + = {{std::move(GroupButton)}}; }*/ MenuKeyboard->inlineKeyboard = {{std::move(keyboards::createGroup)}}; diff --git a/src/main.cpp b/src/main.cpp index 0c0c3f7..18bb952 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,8 +1,7 @@ #include -#include - #include +#include #include "../include/constants.h" #include "../include/db_utils.h" @@ -34,8 +33,8 @@ int main() { making_discipline_keyboard, stop_making_discipline_keyboard, discipline_confirmation_keyboard, - dont_add_description_keyboard] - (const TgBot::CallbackQuery::Ptr& query) { + dont_add_description_keyboard]( + const TgBot::CallbackQuery::Ptr& query) { int64_t userId = query->message->chat->id; if (query->data == button_data::createGroup) { getGroup(userId)->set_owner_id(userId); @@ -63,24 +62,26 @@ int main() { } else if (query->data == button_data::disciplineConfirmed) { bot.getApi().sendMessage(userId, messages::disciplineIsSaved); } else if (query->data == button_data::dontAddDescription) { - bot.getApi().sendMessage(userId, - messages::disciplineHaveNoDescription); + bot.getApi().sendMessage(userId, messages::disciplineHaveNoDescription); getSubject(userId)->set_description(standard_text::defaultDescription); bot.getApi().sendMessage(userId, getSubject(userId)->print_all()); - bot.getApi().sendMessage( - userId, messages::checkDiscipline, nullptr, nullptr, - discipline_confirmation_keyboard); + bot.getApi().sendMessage(userId, messages::checkDiscipline, nullptr, + nullptr, discipline_confirmation_keyboard); setState(userId, State::NONE); } else if (query->data == button_data::mainMenu) { - TgBot::InlineKeyboardMarkup::Ptr MenuKeyboard = db::make_MainMenuKeyboard(bot); - bot.getApi().sendMessage(query->message->chat->id, messages::MenuTitle, nullptr, nullptr, MenuKeyboard); + TgBot::InlineKeyboardMarkup::Ptr MenuKeyboard = + db::make_MainMenuKeyboard(bot); + bot.getApi().sendMessage(query->message->chat->id, messages::MenuTitle, + nullptr, nullptr, MenuKeyboard); } }); bot.getEvents().onCommand( - commands::main_menu,[&bot, mainMenuKeyboard](const TgBot::Message::Ptr& message){ - bot.getApi().sendMessage(message->chat->id, messages::MenuTitle, nullptr, nullptr, mainMenuKeyboard); - }); + commands::main_menu, + [&bot, mainMenuKeyboard](const TgBot::Message::Ptr& message) { + bot.getApi().sendMessage(message->chat->id, messages::MenuTitle, + nullptr, nullptr, mainMenuKeyboard); + }); bot.getEvents().onCommand( commands::start, [&bot](const TgBot::Message::Ptr& message) { @@ -112,7 +113,7 @@ int main() { bot.getEvents().onCommand( commands::make_discipline, [&bot, stop_making_discipline_keyboard]( - const TgBot::Message::Ptr& message) { + const TgBot::Message::Ptr& message) { int64_t userId = message->chat->id; bot.getApi().sendMessage(userId, messages::disciplineMakingNew); bot.getApi().sendMessage(userId, messages::disciplineEnterName, nullptr, @@ -163,11 +164,10 @@ int main() { nullptr, nullptr, stop_making_discipline_keyboard); } else { - bot.getApi().sendMessage(userId, - std::format( - messages::disciplineWrongNameLength, - lengths::min_discipline_name_length, - lengths::min_discipline_name_length)); + bot.getApi().sendMessage( + userId, std::format(messages::disciplineWrongNameLength, + lengths::min_discipline_name_length, + lengths::min_discipline_name_length)); } break; case State::WAITING_FOR_PROFESSOR_NAME: { @@ -176,14 +176,13 @@ int main() { if (spaceCount >= lengths::minimal_space_count_in_name) { getSubject(userId)->set_professor_name(message->text); bot.getApi().sendMessage( - userId, messages::disciplineProfessorNameSaved, nullptr, - nullptr, stop_making_discipline_keyboard); + userId, messages::disciplineProfessorNameSaved, nullptr, nullptr, + stop_making_discipline_keyboard); setState(userId, State::WAITING_FOR_PROFESSOR_EMAIL); bot.getApi().sendMessage(userId, messages::disciplineEnterEmail, nullptr, nullptr); } else { - bot.getApi().sendMessage(userId, - messages::disciplineWrongFullName); + bot.getApi().sendMessage(userId, messages::disciplineWrongFullName); } } break; case State::WAITING_FOR_PROFESSOR_EMAIL: @@ -193,9 +192,9 @@ int main() { nullptr, nullptr, stop_making_discipline_keyboard); setState(userId, State::WAITING_FOR_DESCRIPTION); - bot.getApi().sendMessage( - userId, messages::disciplineEnterDescription, nullptr, nullptr, - dont_add_description_keyboard); + bot.getApi().sendMessage(userId, messages::disciplineEnterDescription, + nullptr, nullptr, + dont_add_description_keyboard); } else { bot.getApi().sendMessage(userId, messages::disciplineWrongEmail); } From 6cf667d86e0e019e0baa37ec6afe99d760f0475c Mon Sep 17 00:00:00 2001 From: Fr11zy Date: Wed, 19 Jun 2024 12:08:37 +0300 Subject: [PATCH 3/3] format --- include/db_utils.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/db_utils.h b/include/db_utils.h index 9cdd125..9ee428e 100644 --- a/include/db_utils.h +++ b/include/db_utils.h @@ -7,6 +7,7 @@ #include #include #include +#include #include "constants.h"