Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions telegram_bot_project/bot/callbacks.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,16 @@ async def start_callback_language(callback_query: types.CallbackQuery) -> None:

match callback_query.data:
case "lang_ua":
print(f"--[INFO] - User {user_id} ({user_name}) set language to ua.")
print(f"[INFO] - User {user_id} ({user_name}) set language to ua.")
await UserService.update_user_language(user_id, 'UKRANIAN')
await callback_query.message.answer(MESSAGES['UKRANIAN']["LANGUAGE_OK"], reply_markup=menu_reply_keyboard())
case "lang_en":
print(f"--[INFO] - User {user_id} ({user_name}) set language to en.")
print(f"[INFO] - User {user_id} ({user_name}) set language to en.")
await UserService.update_user_language(user_id, 'ENGLISH')
await callback_query.message.answer(MESSAGES['ENGLISH']["LANGUAGE_OK"], reply_markup=menu_reply_keyboard())

case _:
print(f"--[INFO] - User {user_id} ({user_name}) sent invalid callback: {callback_query.data}")
print(f"[INFO] - User {user_id} ({user_name}) sent invalid callback: {callback_query.data}")
await callback_query.message.answer(MESSAGES[language]["LANGUAGE_INVALID"])


Expand All @@ -55,7 +55,7 @@ async def callback_idea_process(callback_query: types.CallbackQuery, state: FSMC

match callback_query.data:
case "delete_idea":
print(f"--[INFO] - User {user_id} ({user_name}) deleted idea.")
print(f"[INFO] - User {user_id} ({user_name}) deleted idea.")
await callback_query.message.answer(MESSAGES[language]["IDEA_DELETE"], reply_markup=idea_reply_keyboard())
await state.clear()
case "save_idea":
Expand All @@ -64,21 +64,21 @@ async def callback_idea_process(callback_query: types.CallbackQuery, state: FSMC
idea: str = data.get("idea")

if not idea:
print(f"--[INFO] - User {user_id} ({user_name}) sent empty idea.")
print(f"[INFO] - User {user_id} ({user_name}) sent empty idea.")
await callback_query.message.answer(MESSAGES[language]["IDEA_PROBLEM"], reply_markup=idea_reply_keyboard())
return
else:
await IdeaService.create_user_idea(user_id, idea)
await MyDayService.increment_idea_count(user_id)

print(f"--[INFO] - User {user_id} ({user_name}) saved idea: {idea}")
print(f"[INFO] - User {user_id} ({user_name}) saved idea: {idea}")
await callback_query.message.answer(MESSAGES[language]["IDEA_SAVED"], reply_markup=idea_reply_keyboard())
await state.clear()
except Exception as e:
print(f"--[ERROR] - User {user_id} ({user_name}) failed to save idea: {e}")
print(f"[ERROR] - User {user_id} ({user_name}) failed to save idea: {e}")
await callback_query.message.answer(MESSAGES[language]["IDEA_PROBLEM"])
case _:
print(f"--[INFO] - User {user_id} ({user_name}) sent invalid callback: {callback_query.data}")
print(f"[INFO] - User {user_id} ({user_name}) sent invalid callback: {callback_query.data}")
await callback_query.message.answer(MESSAGES[language]["IDEA_PROBLEM"], reply_markup=idea_reply_keyboard())

async def callback_task_deadline(callback_query: types.CallbackQuery, state: FSMContext) -> None:
Expand All @@ -101,14 +101,14 @@ async def callback_task_deadline(callback_query: types.CallbackQuery, state: FSM
case "no_task":
data = await state.get_data()
saved_task = data.get("task")
print(f"--[INFO] - User {user_id} ({user_name}) saved task: {saved_task}")
print(f"[INFO] - User {user_id} ({user_name}) saved task: {saved_task}")

await TaskService.create_task(user_id, saved_task, False)
await MyDayService.increment_task_count(user_id)
await callback_query.message.answer(MESSAGES[language]["TASK_DEADLINE_NO"], reply_markup=task_menu_keyboard())
await state.clear()
case _:
print(f"--[INFO] - User {user_id} ({user_name}) sent invalid callback: {callback_query.data}")
print(f"[INFO] - User {user_id} ({user_name}) sent invalid callback: {callback_query.data}")
await callback_query.message.answer(MESSAGES[language]["TASK_DEADLINE_INVALID"])

async def callback_routines(callback_query: types.CallbackQuery) -> None:
Expand Down
18 changes: 9 additions & 9 deletions telegram_bot_project/bot/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ async def start_command(message: types.Message):
user_id: int = message.from_user.id
user_name: str = message.from_user.username or "unknown"

print(f"--[INFO] - User {user_id} ({user_name}) - started the bot")
print(f"[INFO] - User {user_id} ({user_name}) - started the bot")
user_find = await UserService.get_user_by_id(user_id)
language: str = await UserService.get_user_language(user_id)
if user_find:
Expand All @@ -34,7 +34,7 @@ async def help_command(message: types.Message):
user_name: str = message.from_user.username or "unknown"

language: str = await UserService.get_user_language(user_id)
print(f"--[INFO] - User {user_id} ({user_name}) - asked for help")
print(f"[INFO] - User {user_id} ({user_name}) - asked for help")
await message.answer(MESSAGES[language]["HELP_MSG"])

# Language Command Handler
Expand Down Expand Up @@ -64,7 +64,7 @@ async def idea_command(message: types.Message, state: FSMContext):
user_find: Any = await UserService.get_user_by_id(user_id)
language: str = await UserService.get_user_language(user_id)

print(f"--[INFO] - User with id: {user_id} - opened /idea.")
print(f"[INFO] - User with id: {user_id} - opened /idea.")
if not user_find:
await message.answer(MESSAGES['ENGLISH']['AUTHORIZATION_PROBLEM'])
else:
Expand All @@ -82,10 +82,10 @@ async def ideas_command(message: types.Message):
else:
ideas: List[str] = await IdeaService.get_all_ideas_by_user_id(user_id)
if not ideas:
print(f"--[INFO] - User with id: {user_id} - has no ideas.")
print(f"[INFO] - User with id: {user_id} - has no ideas.")
await message.answer(MESSAGES[language]['NO_IDEAS'])
else:
print(f"--[INFO] - User with id: {user_id} - has ideas: {ideas}")
print(f"[INFO] - User with id: {user_id} - has ideas: {ideas}")

dividers: str = "\n" + ("-" * int(len(MESSAGES[language]['IDEAS_SHOW']) * 1.65))

Expand Down Expand Up @@ -129,7 +129,7 @@ async def task_command(message: types.Message, state: FSMContext):
if not user_find:
await message.answer(MESSAGES['ENGLISH']['AUTHORIZATION_PROBLEM'])
else:
print(f"--[INFO] - User with id: {user_id} - opened /task.")
print(f"[INFO] - User with id: {user_id} - opened /task.")

await message.answer(MESSAGES[language]['TASK_ADD'])
await state.set_state(DialogStates.confirm_task)
Expand Down Expand Up @@ -313,7 +313,7 @@ async def show_morning_routines(message: types.Message):
await message.answer(MESSAGES['ENGLISH']['AUTHORIZATION_PROBLEM'])
return

print(f"--[INFO] - User with id: {user_id} - opened /morning_routines.")
print(f"[INFO] - User with id: {user_id} - opened /morning_routines.")
morning_routine = await RoutineService.get_user_routines(user_id, routine_type="morning")
if not morning_routine:
await message.answer(MESSAGES[language]['NO_MORNING_ROUTINE'])
Expand Down Expand Up @@ -382,7 +382,7 @@ async def show_evening_routines(message: types.Message):
await message.answer(MESSAGES['ENGLISH']['AUTHORIZATION_PROBLEM'])
return

print(f"--[INFO] - User with id: {user_id} - opened /evening_routines.")
print(f"[INFO] - User with id: {user_id} - opened /evening_routines.")
evening_routine = await RoutineService.get_user_routines(user_id, routine_type="evening")
if not evening_routine:
await message.answer(MESSAGES[language]['NO_MORNING_ROUTINE'])
Expand Down Expand Up @@ -436,4 +436,4 @@ async def show_daily_stats_command(message: types.Message):
created_tasks = stats.get("created_tasks", 0)

text = generate_daily_stats_message(language, created_ideas, completed_tasks, created_tasks)
await message.answer(text, parse_mode="Markdown", reply_markup=menu_reply_keyboard())
await message.answer(text, parse_mode="Markdown", reply_markup=menu_reply_keyboard())
2 changes: 1 addition & 1 deletion telegram_bot_project/bot/fallbacks.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
# Fallback
async def fallback(message: types.Message, state: FSMContext):
current_state = await state.get_state()
print(f"-- [DEBUG] - Current state: {current_state}")
print(f"[DEBUG] - Current state: {current_state}")
if current_state == DialogStates.waiting_for_idea.state:
await process_idea_save(message, state)
elif current_state == DialogStates.delete_idea.state:
Expand Down
41 changes: 20 additions & 21 deletions telegram_bot_project/bot/handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ async def process_idea_save(message: Message, state: FSMContext) -> None:
)
return

print(f"--[INFO] User with id: {user_id} provided idea.")
print(f"[INFO] - User with id: {user_id} provided idea.")

try:
await state.update_data(idea=idea)
Expand All @@ -46,7 +46,7 @@ async def process_idea_save(message: Message, state: FSMContext) -> None:
)

except Exception as e:
print(f"[ERROR] Saving idea failed: {e}")
print(f"[ERROR] - Saving idea failed: {e}")
await message.answer(
MESSAGES[language]['ERROR_SAVING_IDEA'],
reply_markup=idea_reply_keyboard()
Expand All @@ -62,7 +62,7 @@ async def process_idea_delete(message: Message, state: FSMContext) -> None:
language = await UserService.get_user_language(user_id) or "ENGLISH"
ideas = await IdeaService.get_all_ideas_by_user_id(user_id)

print(f"--[DEBUG] User {user_id} ideas: {ideas}")
print(f"[DEBUG] - User {user_id} ideas: {ideas}")

try:
user_number = int(message.text.strip())
Expand All @@ -78,10 +78,10 @@ async def process_idea_delete(message: Message, state: FSMContext) -> None:
idea_to_delete = ideas[index]
real_id = idea_to_delete["id"]

print(f"--[DEBUG] Deleting idea with id {real_id} for user {user_id}")
print(f"[DEBUG] - Deleting idea with id {real_id} for user {user_id}")

await IdeaService.delete_user_idea(real_id)
await MyDayService.dicrement_idea_count(user_id)
await MyDayService.decrement_idea_count(user_id)

await message.answer(MESSAGES[language]['IDEA_DELETED'].format(user_number, idea_to_delete['idea_name']), reply_markup=idea_reply_keyboard())
await state.clear()
Expand All @@ -97,7 +97,7 @@ async def process_idea_update(message: Message, state: FSMContext) -> None:
language = await UserService.get_user_language(user_id) or "ENGLISH"
ideas = await IdeaService.get_all_ideas_by_user_id(user_id)

print(f"--[DEBUG] User {user_id} ideas: {ideas}")
print(f"[DEBUG] - User {user_id} ideas: {ideas}")

try:
user_number = int(message.text.strip())
Expand All @@ -119,7 +119,7 @@ async def process_idea_update(message: Message, state: FSMContext) -> None:
idea_to_update = ideas[index]
real_id = idea_to_update["id"]

print(f"--[DEBUG] Selected idea with id {real_id} for update by user {user_id}")
print(f"[DEBUG] - Selected idea with id {real_id} for update by user {user_id}")

await state.update_data(idea_id=real_id, idea_number=user_number)
await state.set_state(DialogStates.waiting_for_update_text)
Expand Down Expand Up @@ -163,7 +163,7 @@ async def process_task_save(message: Message, state: FSMContext):
return
else:
task = message.text.strip()
print(f"--[INFO] User with id: {user_id} provided task: {task}")
print(f"[INFO] - User with id: {user_id} provided task: {task}")

await message.answer(MESSAGES[language]['TASK_DEADLINE_ASK'], reply_markup=task_reply_keyboard())
await state.update_data(task=task)
Expand All @@ -186,7 +186,7 @@ async def process_task_deadline(message: Message, state: FSMContext):
time_obj = datetime.strptime(deadline_str, "%H:%M").time()
deadline_dt = datetime.combine(datetime.now().date(), time_obj)

print(f"--[INFO] User with id: {user_id} provided deadline: {deadline_dt}")
print(f"[INFO] - User with id: {user_id} provided deadline: {deadline_dt}")

await TaskService.create_task(user_id, task, False, deadline_dt)
await MyDayService.increment_task_count(user_id)
Expand Down Expand Up @@ -220,9 +220,9 @@ async def process_task_delete(message: Message, state: FSMContext):
task_to_delete = tasks[user_number - 1]
real_id = task_to_delete["id"]

print(f"--[INFO] User with id: {user_id} deleted task with id: {real_id}")
print(f"[INFO] - User with id: {user_id} deleted task with id: {real_id}")
await TaskService.delete_task(real_id)
await MyDayService.dicrement_task_count(user_id)
await MyDayService.decrement_task_count(user_id)
await message.answer(MESSAGES[language]['TASK_DELETED'].format(user_number, task_to_delete['task_name']), reply_markup=task_menu_keyboard())
await state.clear()

Expand Down Expand Up @@ -252,7 +252,7 @@ async def process_task_complete(message: Message, state: FSMContext):
task_to_complete = tasks[user_number - 1]
real_id = task_to_complete["id"]

print(f"--[INFO] User with id: {user_id} completed task with id: {real_id}")
print(f"[INFO] - User with id: {user_id} completed task with id: {real_id}")
await TaskService.toggle_task_status(real_id)
await MyDayService.increment_completed_tasks(user_id)
await message.answer(MESSAGES[language]['COMPLETE_TASK_SUCCESS'].format(user_number, task_to_complete['task_name']), reply_markup=task_menu_keyboard())
Expand Down Expand Up @@ -301,7 +301,7 @@ async def process_save_updated_task_name(message: Message, state: FSMContext):
await message.answer(MESSAGES["ENGLISH"]['UPDATE_TASK_NAME_INVALID'], reply_markup=task_menu_keyboard())
return
else:
print(f"--[INFO] User with id: {message.from_user.id} updated task name: {new_task_name}")
print(f"[INFO] - User with id: {message.from_user.id} updated task name: {new_task_name}")
await TaskService.update_task(task_id=task_id, task_name=new_task_name)
await message.answer(MESSAGES["ENGLISH"]['UPDATE_TASK_SUCCESS'].format(user_number), reply_markup=task_menu_keyboard())
await state.clear()
Expand Down Expand Up @@ -332,7 +332,7 @@ async def process_set_wake_time(message: Message, state: FSMContext):
)
return

print(f"--User with id: {user_id} set wake time to: {new_wake_time}")
print(f"[INFO] - User with id: {user_id} set wake time to: {new_wake_time}")
await UserService.update_wake_time(user_id, time_obj)
await message.answer(
MESSAGES[language]['TIMER_SET'].format(new_wake_time),
Expand Down Expand Up @@ -367,7 +367,7 @@ async def process_set_sleep_time(message: Message, state: FSMContext):
)
return

print(f"--User with id: {user_id} set sleep time to: {new_sleep_time}")
print(f"[INFO] - User with id: {user_id} set sleep time to: {new_sleep_time}")
await UserService.update_sleep_time(user_id, time_obj)
await message.answer(
MESSAGES[language]['TIMER_SET'].format(new_sleep_time),
Expand All @@ -393,7 +393,7 @@ async def process_set_routine(message: Message, state: FSMContext, type: str):
try:
await RoutineService.create_routine(user_id, routine_type=type, routine_name=routine_title)

print(f"User with id: {user_id} set routine title: {routine_title}")
print(f"[INFO] - User with id: {user_id} set routine title: {routine_title}")
await message.answer(MESSAGES[language]['ROUTINE_SAVED'].format(routine_title), reply_markup=routine_keyboard)
await state.clear()
except:
Expand Down Expand Up @@ -421,7 +421,7 @@ async def process_delete_morning_routine(message: Message, state: FSMContext, ty
real_id = routine_to_delete["id"]

await RoutineService.delete_routine(real_id)
print(f"User with id: {user_id} deleted routine with id: {real_id}")
print(f"[INFO] - User with id: {user_id} deleted routine with id: {real_id}")

await message.answer(MESSAGES[language]['ROUTINE_DELETED'].format(routine_num, routine_to_delete['routine_name']), reply_markup=routine_keyboard)
await state.clear()
Expand Down Expand Up @@ -471,7 +471,7 @@ async def process_save_updated_morning_routine(message: Message, state: FSMConte

try:
await RoutineService.update_routine(routine_id, routine_title)
print(f"User with id: {user_id} updated routine title: {routine_title}")
print(f"[INFO] - User with id: {user_id} updated routine title: {routine_title}")
await message.answer(MESSAGES[language]['ROUTINE_NAME_SET'].format(routine_title), reply_markup=routine_keyboard)
await state.clear()
except:
Expand All @@ -493,8 +493,7 @@ async def process_feedback_message(message: Message, state: FSMContext):
await message.answer(MESSAGES["ENGLISH"]['INVALID_MESSAGE'])
return

print("-- [INFO] - Feedback message from user with id: {user_id} is: {feedback_message}")
print(f"[INFO] - Feedback message from user with id: {user_id} is: {feedback_message}")
await SmtpService.send_feedback_message(feedback_message, user_id, user_name)
await message.answer(MESSAGES[language]['SMTP_MESSAGE_SENT'], reply_markup=settings_menu_keyboard())
await state.clear()

await state.clear()
8 changes: 4 additions & 4 deletions telegram_bot_project/service/smtp.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@

smtp_data: SmtpData = get_smtp_data()
if not smtp_data:
raise Exception("-- [ERROR] - SMTP data not found.")
raise Exception("[ERROR] - SMTP data not found.")

class SmtpService:
@staticmethod
async def send_feedback_message(user_message: str, user_id: int, user_name: str):
if not validate_text(user_message):
print("-- [ERROR] - Invalid message.")
print("[ERROR] - Invalid message.")
return

email_body: str = USER_FEEDBACK_MAIL_TEXT.format(
Expand All @@ -37,6 +37,6 @@ async def send_feedback_message(user_message: str, user_id: int, user_name: str)
username=smtp_data.smtp_user,
password=smtp_data.smtp_password,
)
print("-- [INFO] - Feedback message sent successfully.")
print("[INFO] - Feedback message sent successfully.")
except Exception as e:
print(f"-- [ERROR] - Failed to send feedback message: {e}")
print(f"[ERROR] - Failed to send feedback message: {e}")