|
23 | 23 | from budget_graph.validation import date_validation, value_validation, description_validation, username_validation, \
|
24 | 24 | password_validation, category_validation
|
25 | 25 | 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 |
27 | 27 |
|
28 | 28 |
|
29 | 29 | load_dotenv() # Load environment variables from .env file
|
@@ -77,8 +77,9 @@ def table_manage_get_buttons(message):
|
77 | 77 | btn3 = KeyboardButton(f"📉 {receive_translation(user_language, "add_expense")}")
|
78 | 78 | btn4 = KeyboardButton(f"❌ {receive_translation(user_language, "del_record")}")
|
79 | 79 | 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) |
82 | 83 | bot.send_message(message.chat.id, f"{receive_translation(user_language, "click_need_button")} "
|
83 | 84 | f"({receive_translation(user_language, "table_manage")})",
|
84 | 85 | reply_markup=markup_1)
|
@@ -290,6 +291,31 @@ def restart_language_after_changes(call) -> None:
|
290 | 291 | reply_markup=markup_1)
|
291 | 292 |
|
292 | 293 |
|
| 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 | + |
293 | 319 | @connect_defer_close_db
|
294 | 320 | def get_my_token(db_connection, message, user_language: str) -> None:
|
295 | 321 | 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)
|
838 | 864 | return res
|
839 | 865 |
|
840 | 866 |
|
| 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 | + |
841 | 880 | @connect_defer_close_db
|
842 | 881 | def user_is_registered(db_connection, telegram_id: int) -> bool:
|
843 | 882 | """
|
|
0 commit comments