src.kb
Все кнопки и клавиатуры для хендлеров
1"""Все кнопки и клавиатуры для хендлеров""" 2 3from aiogram.types import ( 4 InlineKeyboardButton, 5 InlineKeyboardMarkup, 6 KeyboardButton, 7 ReplyKeyboardMarkup, 8) 9from pytils.numeral import get_plural 10 11from core.config import settings 12from db.models import UserActivity, UserData 13from text import rates 14 15static_join_button = InlineKeyboardMarkup( 16 inline_keyboard=[ 17 [InlineKeyboardButton(text="Присоединиться!", callback_data="start_app")] 18 ] 19) 20"""Клавиатура для кнопки "Присоединиться!". 21 22 Используется для приглашения пользователя присоединиться к приложению. 23""" 24 25static_wg_url = InlineKeyboardMarkup( 26 inline_keyboard=[ 27 [ 28 InlineKeyboardButton( 29 text="Скачать WireGuard", url="https://www.wireguard.com/install/" 30 ) 31 ] 32 ] 33) 34"""Клавиатура с кнопкой для скачивания WireGuard. 35 36 Предоставляет пользователю ссылку на установку WireGuard. 37""" 38 39static_wg_platform_keyboard = InlineKeyboardMarkup( 40 inline_keyboard=[ 41 [ 42 InlineKeyboardButton( 43 text="Windows", callback_data="wg_help_info_Windows_start" 44 ), 45 InlineKeyboardButton( 46 text="Linux", callback_data="wg_help_info_Linux_start" 47 ), 48 InlineKeyboardButton( 49 text="macOS", callback_data="wg_help_info_macOS_start" 50 ), 51 ], 52 [ 53 InlineKeyboardButton( 54 text="Android", callback_data="wg_help_info_Android_start" 55 ), 56 InlineKeyboardButton(text="iOS", callback_data="wg_help_info_iOS_start"), 57 ], 58 ] 59) 60"""Клавиатура для выбора платформы WireGuard. 61 62 Позволяет пользователю выбрать операционную систему для получения 63 соответствующей информации по настройке WireGuard. 64""" 65 66static_reg_button = InlineKeyboardMarkup( 67 inline_keyboard=[ 68 [InlineKeyboardButton(text="Зарегистироваться", callback_data="register_user")] 69 ] 70) 71"""Клавиатура с кнопкой регистрации. 72 73 Используется для начала процесса регистрации нового пользователя. 74""" 75 76static_pay_button = InlineKeyboardMarkup( 77 inline_keyboard=[ 78 [InlineKeyboardButton(text="Купить подписку", callback_data="user_payment")] 79 ] 80) 81"""Клавиатура с кнопкой для покупки подписки. 82 83 Позволяет пользователю перейти к процессу покупки подписки. 84""" 85 86static_start_button = ReplyKeyboardMarkup( 87 keyboard=[ 88 [ 89 KeyboardButton(text="Перезагрузка"), 90 KeyboardButton(text="Статус"), 91 ], 92 [ 93 KeyboardButton(text="Подключения"), 94 KeyboardButton(text="Подписка"), 95 ], 96 [ 97 KeyboardButton(text="Помощь"), 98 KeyboardButton(text="Чат"), 99 ], 100 ], 101 resize_keyboard=True, 102 input_field_placeholder="Выберите действие или введите команду", 103) 104"""Клавиатура для основных действий пользователя. 105 106 Предоставляет пользователю выбор действий, таких как перезагрузка, 107 проверка статуса, подключений, подписки и получения помощи. 108""" 109 110static_support_button = InlineKeyboardMarkup( 111 inline_keyboard=[ 112 [InlineKeyboardButton(text="Доложить о проблеме", callback_data="call_support")] 113 ] 114) 115"""Клавиатура с кнопкой для обращения в службу поддержки. 116 117 Позволяет пользователю сообщить о проблеме или запросить помощь. 118""" 119 120static_balance_button = InlineKeyboardMarkup( 121 inline_keyboard=[ 122 [InlineKeyboardButton(text="Пополнить баланс", callback_data="top_up_balance")] 123 ] 124) 125"""Клавиатура с кнопкой для пополнения баланса. 126 127 Позволяет пользователю перейти к процессу пополнения своего баланса. 128""" 129 130why_freezed_button = InlineKeyboardMarkup( 131 inline_keyboard=[ 132 [ 133 InlineKeyboardButton( 134 text="Почему моя конфигурация заморожена?", callback_data="freeze_info" 135 ) 136 ] 137 ] 138) 139"""Клавиатура с кнопкой для получения информации о замороженной конфигурации. 140 141 Позволяет пользователю узнать причины, по которым его конфигурация заморожена. 142""" 143 144freeze_user_button = InlineKeyboardMarkup( 145 inline_keyboard=[ 146 [ 147 InlineKeyboardButton( 148 text="Заморозить аккаунт", callback_data="freeze_account" 149 ) 150 ] 151 ] 152) 153"""Клавиатура с кнопкой для заморозки аккаунта. 154 155 Позволяет пользователю инициировать процесс заморозки своего аккаунта. 156""" 157 158static_history_button = InlineKeyboardMarkup( 159 inline_keyboard=[ 160 [ 161 InlineKeyboardButton( 162 text="Пополнения", callback_data="transact_history_in" 163 ), 164 InlineKeyboardButton(text="Снятия", callback_data="transact_history_out"), 165 ], 166 ] 167) 168"""Клавиатура для отображения истории транзакций. 169 170 Позволяет пользователю просмотреть историю пополнений и снятий средств. 171""" 172 173 174def get_help_menu(name, user_id): 175 """Создает меню помощи для пользователя. 176 177 Args: 178 name (str): Имя пользователя. 179 user_id (int): ID пользователя. 180 181 Returns: 182 InlineKeyboardMarkup: Клавиатура с кнопками помощи. 183 """ 184 return InlineKeyboardMarkup( 185 inline_keyboard=[ 186 [InlineKeyboardButton(text="Что это за сервис?", callback_data="bot_info")], 187 [ 188 InlineKeyboardButton( 189 text="Я первый раз. Что мне делать?", 190 callback_data="first_help_info_start", 191 ) 192 ], 193 [ 194 InlineKeyboardButton( 195 text="Как мне настроить WireGuard?", callback_data="wg_help_info" 196 ) 197 ], 198 [ 199 InlineKeyboardButton( 200 text="У меня тормозит или не работает VPN", 201 callback_data="error_help_info_start", 202 ) 203 ], 204 [InlineKeyboardButton(text="Команды", callback_data="cmd_help_info")], 205 [ 206 InlineKeyboardButton( 207 text="Задать свой вопрос", 208 url=f"{settings.subserver_url}bot/bug/create?name={name}&telegram_id={user_id}", 209 ) 210 ], 211 ] 212 ) 213 214 215def get_help_book_keyboard(pages: list, page: int, prefix: str): 216 """Создает клавиатуру для навигации по страницам помощи. 217 218 Args: 219 pages (list): Список страниц. 220 page (int): Номер текущей страницы. 221 prefix (str): Префикс для callback_data. 222 223 Returns: 224 InlineKeyboardMarkup: Клавиатура с кнопками навигации. 225 """ 226 prev_page = page - 1 227 next_page = page + 1 228 if page == 0: 229 return InlineKeyboardMarkup( 230 inline_keyboard=[ 231 [ 232 InlineKeyboardButton( 233 text="Следующий шаг", 234 callback_data=f"{prefix}_{next_page}", 235 ) 236 ] 237 ] 238 ) 239 if page == len(pages) - 1: 240 return InlineKeyboardMarkup( 241 inline_keyboard=[ 242 [ 243 InlineKeyboardButton( 244 text="Предыдущий шаг", 245 callback_data=f"{prefix}_{prev_page}", 246 ) 247 ], 248 [ 249 InlineKeyboardButton( 250 text="Покажи весь алгоритм", callback_data=f"{prefix}_all" 251 ) 252 ], 253 ] 254 ) 255 return InlineKeyboardMarkup( 256 inline_keyboard=[ 257 [ 258 InlineKeyboardButton( 259 text="Предыдущий шаг", callback_data=f"{prefix}_{prev_page}" 260 ), 261 InlineKeyboardButton( 262 text="Следующий шаг", callback_data=f"{prefix}_{next_page}" 263 ), 264 ], 265 ] 266 ) 267 268 269def get_account_keyboard(user_data: UserData, extended=False): 270 """Создает клавиатуру для управления аккаунтом пользователя. 271 272 Args: 273 user_data (UserData): Данные пользователя. 274 extended (bool, optional): Если True, добавляются дополнительные кнопки. 275 276 Returns: 277 InlineKeyboardMarkup: Клавиатура с кнопками управления аккаунтом. 278 """ 279 buttons = [] 280 match getattr(user_data, "active", None): 281 case UserActivity.active | UserActivity.inactive: 282 buttons.append( 283 [ 284 InlineKeyboardButton( 285 text="❄️ Заморозить аккаунт", callback_data="freeze_account_info" 286 ) 287 ] 288 ) 289 case UserActivity.freezed: 290 buttons.append( 291 [ 292 InlineKeyboardButton( 293 text="🔥 Разморозить аккаунт", callback_data="recover_account" 294 ) 295 ] 296 ) 297 case UserActivity.banned: 298 buttons.append( 299 [ 300 InlineKeyboardButton( 301 text="Подать заявку на разбан", 302 url=f"{settings.subserver_url}bot/bug/create?name={user_data.telegram_name}&telegram_id={user_data.telegram_id}", 303 ) 304 ] 305 ) 306 return InlineKeyboardMarkup(inline_keyboard=buttons) 307 case _: 308 buttons.append( 309 [ 310 InlineKeyboardButton( 311 text="Зарегистироваться", callback_data="register_user" 312 ) 313 ] 314 ) 315 return InlineKeyboardMarkup(inline_keyboard=buttons) 316 buttons.extend( 317 [ 318 [ 319 InlineKeyboardButton( 320 text="📂 Мои конфигурации", callback_data="user_configurations" 321 ) 322 ], 323 [InlineKeyboardButton(text="🤩 Подписка", callback_data="user_payment")], 324 [InlineKeyboardButton(text="🆘 Помощь", callback_data="main_help")], 325 ] 326 ) 327 if not extended: 328 buttons.extend( 329 [ 330 [ 331 InlineKeyboardButton( 332 text="⏬ Инструменты", callback_data="extra_function_open" 333 ) 334 ] 335 ] 336 ) 337 else: 338 buttons.extend( 339 [ 340 [ 341 InlineKeyboardButton( 342 text="⏫ Инструменты", callback_data="extra_function_close" 343 ) 344 ], 345 [ 346 InlineKeyboardButton( 347 text="💬 Наш чат", callback_data="invite_to_chat" 348 ) 349 ], 350 [ 351 InlineKeyboardButton( 352 text="🆔 Мой ID", callback_data="user_id_info" 353 ), 354 InlineKeyboardButton( 355 text="🔊 Unmute" if user_data.mute else "🔇 Mute", 356 callback_data="user_mute_toggle", 357 ), 358 ], 359 [ 360 InlineKeyboardButton( 361 text="🔍 Сервер", callback_data="server_status" 362 ), 363 InlineKeyboardButton( 364 text="⚡️ Скорость VPN", callback_data="server_speed" 365 ), 366 ], 367 ] 368 ) 369 return InlineKeyboardMarkup(inline_keyboard=buttons) 370 371 372def get_config_keyboard(): 373 """Создает клавиатуру для создания конфигурации. 374 375 Returns: 376 tuple: Кортеж из клавиатур для создания конфигурации и выбора формата. 377 """ 378 buttons = [] 379 cfgs = [] 380 cfgs.append( 381 [ 382 InlineKeyboardButton(text="TEXT", callback_data="create_conf_text"), 383 InlineKeyboardButton(text="QR", callback_data="create_conf_qr"), 384 InlineKeyboardButton(text="FILE", callback_data="create_conf_file"), 385 InlineKeyboardButton(text="🚮", callback_data="remove_config_confirm"), 386 ] 387 ) 388 buttons.append( 389 [ 390 InlineKeyboardButton( 391 text="Создать конфигурацию", callback_data="create_configuration" 392 ), 393 ] 394 ) 395 return ( 396 InlineKeyboardMarkup(inline_keyboard=buttons), 397 InlineKeyboardMarkup(inline_keyboard=cfgs), 398 ) 399 400 401def get_subscr_buttons(user_data: UserData, force_rates=False): 402 """Создает клавиатуру для выбора подписки. 403 404 Args: 405 user_data (UserData): Данные пользователя. 406 force_rates (bool, optional): Если True, принудительно отображает тарифы. 407 408 Returns: 409 InlineKeyboardMarkup: Клавиатура с кнопками подписки. 410 """ 411 buttons = [] 412 my_rate = rates.get(user_data.stage, None) 413 if my_rate or force_rates: 414 for key, rate in rates.items(): 415 if rate == my_rate: 416 prefix = "✅ " 417 elif not user_data.free and key == 0.3: 418 prefix = "❌ " 419 else: 420 prefix = "" 421 buttons.append( 422 [ 423 InlineKeyboardButton( 424 text=f"{prefix}{rate} тариф", callback_data=f"rate_info_{key}" 425 ) 426 ] 427 ) 428 if not force_rates: 429 buttons.append( 430 [ 431 InlineKeyboardButton( 432 text="Пополнить баланс", callback_data="top_up_balance" 433 ), 434 InlineKeyboardButton( 435 text="История операций", callback_data="transact_history" 436 ), 437 ], 438 ) 439 else: 440 buttons.extend( 441 [ 442 [ 443 InlineKeyboardButton( 444 text="Выбрать тариф", callback_data="change_rate" 445 ) 446 ], 447 [ 448 InlineKeyboardButton( 449 text="Пополнить баланс", callback_data="top_up_balance" 450 ), 451 InlineKeyboardButton( 452 text="История операций", callback_data="transact_history" 453 ), 454 ], 455 ] 456 ) 457 keyboard = InlineKeyboardMarkup(inline_keyboard=buttons) 458 return keyboard 459 460 461def get_rate_button(rate: int): 462 """Создает кнопку для выбора тарифа. 463 464 Args: 465 rate (int): Значение тарифа. 466 467 Returns: 468 InlineKeyboardMarkup: Клавиатура с кнопкой выбора тарифа. 469 """ 470 return InlineKeyboardMarkup( 471 inline_keyboard=[ 472 [ 473 InlineKeyboardButton( 474 text="Выбрать этот тариф", callback_data=f"accept_rate_{rate}" 475 ) 476 ] 477 ] 478 ) 479 480 481def get_pay_keyboard(): 482 """Создает клавиатуру для выбора суммы оплаты. 483 484 Returns: 485 InlineKeyboardMarkup: Клавиатура с кнопками для оплаты. 486 """ 487 buttons = [ 488 [ 489 InlineKeyboardButton(text="100", callback_data="pay_sub_100"), 490 InlineKeyboardButton(text="250", callback_data="pay_sub_250"), 491 InlineKeyboardButton(text="500", callback_data="pay_sub_500"), 492 InlineKeyboardButton(text="1000", callback_data="pay_sub_1000"), 493 ] 494 ] 495 keyboard = InlineKeyboardMarkup(inline_keyboard=buttons) 496 return keyboard 497 498 499def get_bug_report_url(name, user_id): 500 """Создает кнопку для заполнения формы обращения. 501 502 Args: 503 name (str): Имя пользователя. 504 user_id (int): ID пользователя. 505 506 Returns: 507 InlineKeyboardMarkup: Клавиатура с кнопкой для заполнения формы обращения. 508 """ 509 return InlineKeyboardMarkup( 510 inline_keyboard=[ 511 [ 512 InlineKeyboardButton( 513 text="Заполнить форму обращения", 514 url=f"{settings.subserver_url}bot/bug/create?name={name}&telegram_id={user_id}", 515 ) 516 ] 517 ] 518 ) 519 520 521def get_pay_url(sum, url): 522 """Создает кнопку для пополнения баланса. 523 524 Args: 525 sum (float): Сумма пополнения. 526 url (str): URL для пополнения. 527 528 Returns: 529 InlineKeyboardMarkup: Клавиатура с кнопкой для пополнения. 530 """ 531 return InlineKeyboardMarkup( 532 inline_keyboard=[ 533 [ 534 InlineKeyboardButton( 535 text=f"Пополнить на {get_plural(sum, 'рубль, рубля, рублей')}", 536 url=url, 537 ) 538 ] 539 ] 540 ) 541 542 543def get_chat_button(url): 544 """Создает кнопку для получения доступа в чат. 545 546 Args: 547 url (str): URL для доступа в чат. 548 549 Returns: 550 InlineKeyboardMarkup: Клавиатура с кнопкой для доступа в чат. 551 """ 552 return InlineKeyboardMarkup( 553 inline_keyboard=[ 554 [ 555 InlineKeyboardButton( 556 text="🌟Получить доступ в чат", 557 url=url, 558 ) 559 ] 560 ] 561 ) 562 563 564def remove_config(): 565 buttons = [ 566 [ 567 InlineKeyboardButton(text="Удалить", callback_data="remove_config"), 568 InlineKeyboardButton(text="Отмена", callback_data="remove_config_cancel"), 569 ] 570 ] 571 keyboard = InlineKeyboardMarkup(inline_keyboard=buttons) 572 return keyboard
Клавиатура с кнопкой для скачивания WireGuard.
Предоставляет пользователю ссылку на установку WireGuard.
Клавиатура для выбора платформы WireGuard.
Позволяет пользователю выбрать операционную систему для получения соответствующей информации по настройке WireGuard.
216def get_help_book_keyboard(pages: list, page: int, prefix: str): 217 """Создает клавиатуру для навигации по страницам помощи. 218 219 Args: 220 pages (list): Список страниц. 221 page (int): Номер текущей страницы. 222 prefix (str): Префикс для callback_data. 223 224 Returns: 225 InlineKeyboardMarkup: Клавиатура с кнопками навигации. 226 """ 227 prev_page = page - 1 228 next_page = page + 1 229 if page == 0: 230 return InlineKeyboardMarkup( 231 inline_keyboard=[ 232 [ 233 InlineKeyboardButton( 234 text="Следующий шаг", 235 callback_data=f"{prefix}_{next_page}", 236 ) 237 ] 238 ] 239 ) 240 if page == len(pages) - 1: 241 return InlineKeyboardMarkup( 242 inline_keyboard=[ 243 [ 244 InlineKeyboardButton( 245 text="Предыдущий шаг", 246 callback_data=f"{prefix}_{prev_page}", 247 ) 248 ], 249 [ 250 InlineKeyboardButton( 251 text="Покажи весь алгоритм", callback_data=f"{prefix}_all" 252 ) 253 ], 254 ] 255 ) 256 return InlineKeyboardMarkup( 257 inline_keyboard=[ 258 [ 259 InlineKeyboardButton( 260 text="Предыдущий шаг", callback_data=f"{prefix}_{prev_page}" 261 ), 262 InlineKeyboardButton( 263 text="Следующий шаг", callback_data=f"{prefix}_{next_page}" 264 ), 265 ], 266 ] 267 )
Создает клавиатуру для навигации по страницам помощи.
Arguments:
- pages (list): Список страниц.
- page (int): Номер текущей страницы.
- prefix (str): Префикс для callback_data.
Returns:
InlineKeyboardMarkup: Клавиатура с кнопками навигации.
270def get_account_keyboard(user_data: UserData, extended=False): 271 """Создает клавиатуру для управления аккаунтом пользователя. 272 273 Args: 274 user_data (UserData): Данные пользователя. 275 extended (bool, optional): Если True, добавляются дополнительные кнопки. 276 277 Returns: 278 InlineKeyboardMarkup: Клавиатура с кнопками управления аккаунтом. 279 """ 280 buttons = [] 281 match getattr(user_data, "active", None): 282 case UserActivity.active | UserActivity.inactive: 283 buttons.append( 284 [ 285 InlineKeyboardButton( 286 text="❄️ Заморозить аккаунт", callback_data="freeze_account_info" 287 ) 288 ] 289 ) 290 case UserActivity.freezed: 291 buttons.append( 292 [ 293 InlineKeyboardButton( 294 text="🔥 Разморозить аккаунт", callback_data="recover_account" 295 ) 296 ] 297 ) 298 case UserActivity.banned: 299 buttons.append( 300 [ 301 InlineKeyboardButton( 302 text="Подать заявку на разбан", 303 url=f"{settings.subserver_url}bot/bug/create?name={user_data.telegram_name}&telegram_id={user_data.telegram_id}", 304 ) 305 ] 306 ) 307 return InlineKeyboardMarkup(inline_keyboard=buttons) 308 case _: 309 buttons.append( 310 [ 311 InlineKeyboardButton( 312 text="Зарегистироваться", callback_data="register_user" 313 ) 314 ] 315 ) 316 return InlineKeyboardMarkup(inline_keyboard=buttons) 317 buttons.extend( 318 [ 319 [ 320 InlineKeyboardButton( 321 text="📂 Мои конфигурации", callback_data="user_configurations" 322 ) 323 ], 324 [InlineKeyboardButton(text="🤩 Подписка", callback_data="user_payment")], 325 [InlineKeyboardButton(text="🆘 Помощь", callback_data="main_help")], 326 ] 327 ) 328 if not extended: 329 buttons.extend( 330 [ 331 [ 332 InlineKeyboardButton( 333 text="⏬ Инструменты", callback_data="extra_function_open" 334 ) 335 ] 336 ] 337 ) 338 else: 339 buttons.extend( 340 [ 341 [ 342 InlineKeyboardButton( 343 text="⏫ Инструменты", callback_data="extra_function_close" 344 ) 345 ], 346 [ 347 InlineKeyboardButton( 348 text="💬 Наш чат", callback_data="invite_to_chat" 349 ) 350 ], 351 [ 352 InlineKeyboardButton( 353 text="🆔 Мой ID", callback_data="user_id_info" 354 ), 355 InlineKeyboardButton( 356 text="🔊 Unmute" if user_data.mute else "🔇 Mute", 357 callback_data="user_mute_toggle", 358 ), 359 ], 360 [ 361 InlineKeyboardButton( 362 text="🔍 Сервер", callback_data="server_status" 363 ), 364 InlineKeyboardButton( 365 text="⚡️ Скорость VPN", callback_data="server_speed" 366 ), 367 ], 368 ] 369 ) 370 return InlineKeyboardMarkup(inline_keyboard=buttons)
Создает клавиатуру для управления аккаунтом пользователя.
Arguments:
- user_data (UserData): Данные пользователя.
- extended (bool, optional): Если True, добавляются дополнительные кнопки.
Returns:
InlineKeyboardMarkup: Клавиатура с кнопками управления аккаунтом.
373def get_config_keyboard(): 374 """Создает клавиатуру для создания конфигурации. 375 376 Returns: 377 tuple: Кортеж из клавиатур для создания конфигурации и выбора формата. 378 """ 379 buttons = [] 380 cfgs = [] 381 cfgs.append( 382 [ 383 InlineKeyboardButton(text="TEXT", callback_data="create_conf_text"), 384 InlineKeyboardButton(text="QR", callback_data="create_conf_qr"), 385 InlineKeyboardButton(text="FILE", callback_data="create_conf_file"), 386 InlineKeyboardButton(text="🚮", callback_data="remove_config_confirm"), 387 ] 388 ) 389 buttons.append( 390 [ 391 InlineKeyboardButton( 392 text="Создать конфигурацию", callback_data="create_configuration" 393 ), 394 ] 395 ) 396 return ( 397 InlineKeyboardMarkup(inline_keyboard=buttons), 398 InlineKeyboardMarkup(inline_keyboard=cfgs), 399 )
Создает клавиатуру для создания конфигурации.
Returns:
tuple: Кортеж из клавиатур для создания конфигурации и выбора формата.
482def get_pay_keyboard(): 483 """Создает клавиатуру для выбора суммы оплаты. 484 485 Returns: 486 InlineKeyboardMarkup: Клавиатура с кнопками для оплаты. 487 """ 488 buttons = [ 489 [ 490 InlineKeyboardButton(text="100", callback_data="pay_sub_100"), 491 InlineKeyboardButton(text="250", callback_data="pay_sub_250"), 492 InlineKeyboardButton(text="500", callback_data="pay_sub_500"), 493 InlineKeyboardButton(text="1000", callback_data="pay_sub_1000"), 494 ] 495 ] 496 keyboard = InlineKeyboardMarkup(inline_keyboard=buttons) 497 return keyboard
Создает клавиатуру для выбора суммы оплаты.
Returns:
InlineKeyboardMarkup: Клавиатура с кнопками для оплаты.
500def get_bug_report_url(name, user_id): 501 """Создает кнопку для заполнения формы обращения. 502 503 Args: 504 name (str): Имя пользователя. 505 user_id (int): ID пользователя. 506 507 Returns: 508 InlineKeyboardMarkup: Клавиатура с кнопкой для заполнения формы обращения. 509 """ 510 return InlineKeyboardMarkup( 511 inline_keyboard=[ 512 [ 513 InlineKeyboardButton( 514 text="Заполнить форму обращения", 515 url=f"{settings.subserver_url}bot/bug/create?name={name}&telegram_id={user_id}", 516 ) 517 ] 518 ] 519 )
Создает кнопку для заполнения формы обращения.
Arguments:
- name (str): Имя пользователя.
- user_id (int): ID пользователя.
Returns:
InlineKeyboardMarkup: Клавиатура с кнопкой для заполнения формы обращения.
522def get_pay_url(sum, url): 523 """Создает кнопку для пополнения баланса. 524 525 Args: 526 sum (float): Сумма пополнения. 527 url (str): URL для пополнения. 528 529 Returns: 530 InlineKeyboardMarkup: Клавиатура с кнопкой для пополнения. 531 """ 532 return InlineKeyboardMarkup( 533 inline_keyboard=[ 534 [ 535 InlineKeyboardButton( 536 text=f"Пополнить на {get_plural(sum, 'рубль, рубля, рублей')}", 537 url=url, 538 ) 539 ] 540 ] 541 )
Создает кнопку для пополнения баланса.
Arguments:
- sum (float): Сумма пополнения.
- url (str): URL для пополнения.
Returns:
InlineKeyboardMarkup: Клавиатура с кнопкой для пополнения.