Skip to content

Commit d9d5215

Browse files
authored
Merge pull request #11 from gnatykdm/Idea-Configuration
Idea-Configuration[Show-Idea-List] C:3
2 parents cd15eae + 55c3ef0 commit d9d5215

File tree

4 files changed

+41
-3
lines changed

4 files changed

+41
-3
lines changed

telegram_bot_project/bot/commands.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1-
from typing import Any
1+
from typing import Any, List
22
from aiogram import types
33
from aiogram.fsm.context import FSMContext
44

5+
from bot.utills import format_date
56
from messages import MESSAGES
7+
from service.idea import IdeaService
68
from service.user import UserService
79
from bot.buttons import get_language_keyboard, menu_reply_keyboard
810
from states import DialogStates
911

10-
1112
# Start Command Handler
1213
async def start_command(message: types.Message):
1314
user_id: int = message.from_user.id
@@ -68,3 +69,27 @@ async def idea_command(message: types.Message, state: FSMContext):
6869
await message.answer(MESSAGES[language]['IDEA_RESPONSE'])
6970
await state.set_state(DialogStates.waiting_for_idea)
7071

72+
# Show Ideas Handler
73+
async def ideas_command(message: types.Message):
74+
user_id: int = message.from_user.id
75+
user_find: Any = await UserService.get_user_by_id(user_id)
76+
language: str = await UserService.get_user_language(user_id)
77+
78+
if not user_find:
79+
await message.answer(MESSAGES['ENGLISH']['AUTHORIZATION_PROBLEM'])
80+
else:
81+
ideas: List[str] = await IdeaService.get_all_ideas_by_user_id(user_id)
82+
if not ideas:
83+
print(f"--[INFO] - User with id: {user_id} - has no ideas.")
84+
await message.answer(MESSAGES[language]['NO_IDEAS'])
85+
else:
86+
print(f"--[INFO] - User with id: {user_id} - has ideas: {ideas}")
87+
88+
dividers: str = "\n" + ("-" * int(len(MESSAGES[language]['IDEAS_SHOW']) * 1.65))
89+
90+
formatted_ideas = MESSAGES[language]['IDEAS_SHOW'] + dividers + "\n" + "\n".join(
91+
f"# {num}. {idea['idea_name']}\n[{format_date(idea['creation_date'])}]"
92+
for num, idea in enumerate(ideas, start=1)
93+
)
94+
95+
await message.answer(formatted_ideas, reply_markup=menu_reply_keyboard())

telegram_bot_project/bot/utills.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from datetime import datetime
2+
3+
def format_date(dt: datetime) -> str:
4+
return dt.strftime("%d.%m.%Y %H:%M")

telegram_bot_project/main.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55
from aiogram.fsm.storage.memory import MemoryStorage
66
from aiogram.types import Message, CallbackQuery
77
from config import TOKEN
8-
from bot.commands import start_command, help_command, menu_command, language_command, idea_command
8+
from bot.commands import *
99
from bot.handlers import process_idea_save
1010
from bot.callbacks import start_callback_language, callback_idea_process
11+
from messages import BUTTON_IDEA
1112
from states import DialogStates
1213

1314
storage: MemoryStorage = MemoryStorage()
@@ -34,6 +35,10 @@ async def language(message: Message):
3435
async def idea(message: Message, state: FSMContext):
3536
await idea_command(message, state)
3637

38+
@dp.message(Command("ideas"))
39+
async def ideas(message: Message):
40+
await ideas_command(message)
41+
3742
@dp.callback_query(F.data.in_({"lang_ua", "lang_en"}))
3843
async def callback_language(callback_query: CallbackQuery):
3944
await start_callback_language(callback_query)

telegram_bot_project/messages.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
"IDEA_ACTION": "Що бажаєте зробити з цією ідеєю?",
1818
"IDEA_DELETE": "🗑️ Ідею було видалено.",
1919
"IDEA_PROBLEM": "⚠️ Виникла проблема із збереженням ідеї. Спробуйте ще раз.",
20+
"IDEAS_SHOW": "💡 Усі ваші ідеї: ",
21+
"NO_IDEAS": "📝 Ви ще не маєте ідей.",
2022
"LANGUAGE_ASK": (
2123
"🌐 **Оберіть мову інтерфейсу:**\n"
2224
"Натисніть кнопку нижче, щоб продовжити:"
@@ -46,6 +48,8 @@
4648
"IDEA_ACTION": "What would you like to do with your idea?",
4749
"IDEA_DELETE": "🗑️ Idea has been deleted.",
4850
"IDEA_PROBLEM": "⚠️ There was an issue saving your idea. Please try again.",
51+
"IDEAS_SHOW": "💡 Here are your ideas: ",
52+
"NO_IDEAS": "📝 You don't have any ideas yet. Be the first to save one!",
4953
"LANGUAGE_ASK": (
5054
"🌐 **Please choose your interface language:**\n"
5155
"Tap a button below to continue:"

0 commit comments

Comments
 (0)