Skip to content

Commit 5fecdb1

Browse files
committed
main methods for new functionality - report in the form of graphs
1 parent d53d137 commit 5fecdb1

File tree

1 file changed

+42
-3
lines changed

1 file changed

+42
-3
lines changed

budget_graph/bot.py

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
from budget_graph.validation import date_validation, value_validation, description_validation, username_validation, \
2424
password_validation, category_validation
2525
from budget_graph.helpers import StorageMsgIdForDeleteAfterOperation, get_category_button_labels, get_bot_commands, \
26-
get_category_translate, get_timezone_buttons, get_language_buttons
26+
get_category_translate, get_timezone_buttons, get_language_buttons, get_diagram_buttons
2727

2828

2929
load_dotenv() # Load environment variables from .env file
@@ -77,8 +77,9 @@ def table_manage_get_buttons(message):
7777
btn3 = KeyboardButton(f"📉 {receive_translation(user_language, "add_expense")}")
7878
btn4 = KeyboardButton(f"❌ {receive_translation(user_language, "del_record")}")
7979
btn5 = KeyboardButton(f"🗃️ {receive_translation(user_language, "get_csv")}")
80-
btn6 = KeyboardButton(f"↩️ {receive_translation(user_language, "back")}")
81-
markup_1.add(btn1, btn2, btn3, btn4, btn5, btn6)
80+
btn6 = KeyboardButton(f"📊 {receive_translation(user_language, 'get_diagram')}")
81+
btn7 = KeyboardButton(f"↩️ {receive_translation(user_language, "back")}")
82+
markup_1.add(btn1, btn2, btn3, btn4, btn5, btn6, btn7)
8283
bot.send_message(message.chat.id, f"{receive_translation(user_language, "click_need_button")} "
8384
f"({receive_translation(user_language, "table_manage")})",
8485
reply_markup=markup_1)
@@ -290,6 +291,31 @@ def restart_language_after_changes(call) -> None:
290291
reply_markup=markup_1)
291292

292293

294+
@connect_defer_close_db
295+
def get_diagram(db_connection, message, user_language: str) -> None:
296+
telegram_id: int = message.from_user.id
297+
298+
# TODO - проверка на премиум
299+
300+
group_id: int = db_connection.get_group_id_by_telegram_id(telegram_id)
301+
user_is_owner: bool = db_connection.check_user_is_group_owner_by_telegram_id(telegram_id, group_id)
302+
markup_1 = InlineKeyboardMarkup(get_diagram_buttons(user_language, user_is_owner))
303+
bot.send_message(message.chat.id, f"{receive_translation(user_language, 'choose_diagram_type')}:",
304+
reply_markup=markup_1)
305+
306+
307+
@bot.callback_query_handler(func=lambda call: call.data.startswith('get_diagram'))
308+
@connect_defer_close_db
309+
def callback_query_get_diagram(db_connection, call):
310+
telegram_id: int = call.from_user.id
311+
user_language: str = check_user_language(telegram_id)
312+
group_id: int = db_connection.get_group_id_by_telegram_id(telegram_id)
313+
diagram_type: int = int(call.data[-1])
314+
build_diagram(diagram_type, call.message.chat.id, telegram_id, group_id)
315+
bot.answer_callback_query(call.id, f'{receive_translation(user_language, "wait_diagram")}')
316+
bot.delete_message(call.message.chat.id, call.message.message_id)
317+
318+
293319
@connect_defer_close_db
294320
def get_my_token(db_connection, message, user_language: str) -> None:
295321
telegram_id: int = message.from_user.id
@@ -838,6 +864,19 @@ def get_str_with_group_users(db_connection, telegram_id: int, with_owner: bool)
838864
return res
839865

840866

867+
def build_diagram(diagram_type: int, chat_id: int, telegram_id: int | None, group_id: int | None):
868+
"""
869+
:param diagram_type:
870+
0 - по запросившему пользователю
871+
1 - по группе
872+
2 - по конкретному пользователю (доступно только владельцу группы)
873+
:param chat_id:
874+
:param telegram_id:
875+
:param group_id:
876+
"""
877+
pass
878+
879+
841880
@connect_defer_close_db
842881
def user_is_registered(db_connection, telegram_id: int) -> bool:
843882
"""

0 commit comments

Comments
 (0)