diff --git a/telegram_bot_project/bot/buttons.py b/telegram_bot_project/bot/buttons.py index 77c9144..910202c 100644 --- a/telegram_bot_project/bot/buttons.py +++ b/telegram_bot_project/bot/buttons.py @@ -75,4 +75,19 @@ def task_menu_keyboard() -> ReplyKeyboardMarkup: task_menu_keyboard.keyboard.append([button_delete, button_update]) task_menu_keyboard.keyboard.append([button_menu, button_all_tasks]) - return task_menu_keyboard \ No newline at end of file + return task_menu_keyboard + +def settings_menu_keyboard() -> ReplyKeyboardMarkup: + settings_menu_keyboard = ReplyKeyboardMarkup(keyboard=[], resize_keyboard=True, row_width=2) + + main_menu_button = KeyboardButton(text=MENU_BUTTON) + feedback_button = KeyboardButton(text=SETTINGS_BUTTON_FEEDBACK) + language_button = KeyboardButton(text=SETTINGS_BUTTON_LANGUAGE) + routine_button = KeyboardButton(text=SETTINGS_BUTTON_ROUTINE) + routine_time = KeyboardButton(text=SETTINGS_BUTTON_ROUTINE_TIME) + + settings_menu_keyboard.keyboard.append([routine_time, routine_button]) + settings_menu_keyboard.keyboard.append([language_button, feedback_button]) + settings_menu_keyboard.keyboard.append([main_menu_button]) + + return settings_menu_keyboard \ No newline at end of file diff --git a/telegram_bot_project/bot/commands.py b/telegram_bot_project/bot/commands.py index 66e33d8..b169f40 100644 --- a/telegram_bot_project/bot/commands.py +++ b/telegram_bot_project/bot/commands.py @@ -7,7 +7,7 @@ from service.idea import IdeaService from service.task import TaskService from service.user import UserService -from bot.buttons import get_language_keyboard, menu_reply_keyboard, idea_reply_keyboard, task_menu_keyboard +from bot.buttons import * from states import DialogStates # Start Command Handler @@ -223,4 +223,15 @@ async def update_task_command(message: types.Message, state: FSMContext): await message.answer(MESSAGES[language]['UPDATE_TASK_MSG']) await state.set_state(DialogStates.update_task_id) - await state.update_data(tasks=tasks) \ No newline at end of file + await state.update_data(tasks=tasks) + +#Setting Menu Open Command +async def setting_menu_command(message: types.Message): + user_id: int = message.from_user.id + user_find: Any = await UserService.get_user_by_id(user_id) + language: str = await UserService.get_user_language(user_id) + + if not user_find: + await message.answer(MESSAGES['ENGLISH']['AUTHORIZATION_PROBLEM']) + else: + await message.answer(MESSAGES[language]['SETTINGS_MENU'], reply_markup=settings_menu_keyboard()) diff --git a/telegram_bot_project/main.py b/telegram_bot_project/main.py index b748ed6..ef411d3 100644 --- a/telegram_bot_project/main.py +++ b/telegram_bot_project/main.py @@ -38,6 +38,10 @@ async def menu(message: Message): async def language(message: Message): await language_command(message) +@dp.message(lambda m: m.text == SETTINGS_BUTTON_LANGUAGE) +async def language(message: Message): + await language_command(message) + @dp.message(Command("idea")) @dp.message(lambda m: m.text == BUTTON_IDEA) async def idea(message: Message, state: FSMContext): @@ -100,6 +104,14 @@ async def update_task(message: Message, state: FSMContext): async def edit_task(message: Message, state: FSMContext): await update_task_command(message, state) +@dp.message(lambda m: m.text == BUTTON_SETTINGS) +async def settings(message: Message): + await setting_menu_command(message) + +@dp.message(Command("settings")) +async def settings(message: Message): + await setting_menu_command(message) + @dp.callback_query(F.data.in_({"lang_ua", "lang_en"})) async def callback_language(callback_query: CallbackQuery): await start_callback_language(callback_query) diff --git a/telegram_bot_project/messages.py b/telegram_bot_project/messages.py index 83e4a5e..3c61126 100644 --- a/telegram_bot_project/messages.py +++ b/telegram_bot_project/messages.py @@ -51,6 +51,7 @@ "UPDATE_TASK_PROBLEM": "⚠️ Помилка під час оновлення. 😕", "UPDATE_TASK_NAME_MSG": "📝 Введіть нову назву завдання:", "UPDATE_TASK_NAME_INVALID": "❌ Неправильна назва! 🔄", + "SETTINGS_MENU": "⚙️ Ласкаво просимо в Налаштування", "LANGUAGE_ASK": ( "🌐 **Оберіть мову інтерфейсу:**\n" "Натисніть кнопку нижче ⬇️" @@ -113,6 +114,7 @@ "UPDATE_TASK_PROBLEM": "⚠️ Problem updating task. 😕", "UPDATE_TASK_NAME_MSG": "📝 Enter the new task name:", "UPDATE_TASK_NAME_INVALID": "❌ Invalid task name! 🔄", + "SETTINGS_MENU": "⚙️ Welcome to Settings", "LANGUAGE_ASK": ( "🌐 **Choose your language:**\n" "Tap a button below ⬇️" @@ -146,3 +148,7 @@ BUTTON_EDIT_TASK = "✏️ Edit Task" BUTTON_TOGGLE_STATUS = "✅ Complete" BUTTON_ALL_TASKS = "📂 All tasks" +SETTINGS_BUTTON_LANGUAGE = "🌐 Language" +SETTINGS_BUTTON_FEEDBACK = "💬 Feedback" +SETTINGS_BUTTON_ROUTINE = "✅ Routine" +SETTINGS_BUTTON_ROUTINE_TIME = "⏰ Routine Time"