Fixed inline keyboard button parsing errors by replacing GAME_KEYBOARDS constants with hardcoded InlineKeyboardButton objects in start(), help(), handle_message(), handle_quiz_answer(), show_start_menu(), and show_help_menu() methods

This commit is contained in:
2025-10-15 15:40:38 +03:00
parent 2db3b05bcb
commit 885677976d
4 changed files with 32 additions and 11 deletions
Binary file not shown.
Binary file not shown.
+32 -11
View File
@@ -5,7 +5,7 @@ import os
from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup, InlineQueryResultArticle, InputTextMessageContent from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup, InlineQueryResultArticle, InputTextMessageContent
from telegram.ext import ApplicationBuilder, ContextTypes, CommandHandler, MessageHandler, filters, InlineQueryHandler, ChatMemberHandler from telegram.ext import ApplicationBuilder, ContextTypes, CommandHandler, MessageHandler, filters, InlineQueryHandler, ChatMemberHandler
from database_sqlite import Database from database_sqlite import Database
from config import BOT_TOKEN, OPENWEATHER_API_KEY, NEWS_API_KEY from config_local import BOT_TOKEN, OPENWEATHER_API_KEY, NEWS_API_KEY
from messages import * from messages import *
# Настройка логирования # Настройка логирования
@@ -68,7 +68,10 @@ class TelegramBot:
user = update.effective_user user = update.effective_user
db.add_user(user.id, user.username, user.first_name, user.last_name) db.add_user(user.id, user.username, user.first_name, user.last_name)
keyboard = GAME_KEYBOARDS['main_menu'] keyboard = [
[InlineKeyboardButton("📋 Помощь", callback_data='cmd_help')],
[InlineKeyboardButton("🎮 Мини игры", callback_data='cmd_play_game')]
]
reply_markup = InlineKeyboardMarkup(keyboard) reply_markup = InlineKeyboardMarkup(keyboard)
welcome_text = USER_MESSAGES['welcome'].format(name=user.first_name) welcome_text = USER_MESSAGES['welcome'].format(name=user.first_name)
@@ -77,10 +80,13 @@ class TelegramBot:
async def help(self, update: Update, context: ContextTypes.DEFAULT_TYPE): async def help(self, update: Update, context: ContextTypes.DEFAULT_TYPE):
"""Обработчик команды /help""" """Обработчик команды /help"""
keyboard = GAME_KEYBOARDS['help_menu'] keyboard = [
[InlineKeyboardButton("🚀 Старт", callback_data='cmd_start')],
[InlineKeyboardButton("🔄 Начать заново", callback_data='cmd_restart')]
]
reply_markup = InlineKeyboardMarkup(keyboard) reply_markup = InlineKeyboardMarkup(keyboard)
await update.message.reply_text(messages.HELP_TEXT, parse_mode='HTML', reply_markup=reply_markup) await update.message.reply_text(HELP_TEXT, parse_mode='HTML', reply_markup=reply_markup)
async def rank(self, update: Update, context: ContextTypes.DEFAULT_TYPE): async def rank(self, update: Update, context: ContextTypes.DEFAULT_TYPE):
"""Показать рейтинг пользователя""" """Показать рейтинг пользователя"""
@@ -540,7 +546,10 @@ ID: {user_info['ID']}
question = context.user_data.get('quiz_question', {}) question = context.user_data.get('quiz_question', {})
if answer_index == correct_index: if answer_index == correct_index:
keyboard = GAME_KEYBOARDS['help_menu'] keyboard = [
[InlineKeyboardButton("🚀 Старт", callback_data='cmd_start')],
[InlineKeyboardButton("🔄 Начать заново", callback_data='cmd_restart')]
]
reply_markup = InlineKeyboardMarkup(keyboard) reply_markup = InlineKeyboardMarkup(keyboard)
await query.edit_message_text(GAME_MESSAGES['quiz_correct'].format( await query.edit_message_text(GAME_MESSAGES['quiz_correct'].format(
question=question.get('question', ''), question=question.get('question', ''),
@@ -548,7 +557,10 @@ ID: {user_info['ID']}
), reply_markup=reply_markup) ), reply_markup=reply_markup)
db.update_score(query.from_user.id, SCORE_VALUES['game_win']) db.update_score(query.from_user.id, SCORE_VALUES['game_win'])
else: else:
keyboard = GAME_KEYBOARDS['help_menu'] keyboard = [
[InlineKeyboardButton("🚀 Старт", callback_data='cmd_start')],
[InlineKeyboardButton("🔄 Начать заново", callback_data='cmd_restart')]
]
reply_markup = InlineKeyboardMarkup(keyboard) reply_markup = InlineKeyboardMarkup(keyboard)
correct_answer = question.get('answers', [])[correct_index] if correct_index < len(question.get('answers', [])) else "неизвестен" correct_answer = question.get('answers', [])[correct_index] if correct_index < len(question.get('answers', [])) else "неизвестен"
await query.edit_message_text(GAME_MESSAGES['quiz_wrong'].format( await query.edit_message_text(GAME_MESSAGES['quiz_wrong'].format(
@@ -1147,12 +1159,12 @@ ID: {user_info['ID']}
# Проверка на слова "реквизиты" # Проверка на слова "реквизиты"
if "реквизиты" in message_text or "реквизит" in message_text: if "реквизиты" in message_text or "реквизит" in message_text:
await update.message.reply_text(messages.BANK_DETAILS_TEXT, reply_to_message_id=update.message.message_id) await update.message.reply_text(BANK_DETAILS_TEXT, reply_to_message_id=update.message.message_id)
return return
# Предопределенные ответы # Предопределенные ответы
response_found = False response_found = False
for key, response in messages.PREDEFINED_RESPONSES.items(): for key, response in PREDEFINED_RESPONSES.items():
if key in message_text: if key in message_text:
await update.message.reply_text(response) await update.message.reply_text(response)
response_found = True response_found = True
@@ -1160,7 +1172,10 @@ ID: {user_info['ID']}
if not response_found: if not response_found:
# Если нет предопределенного ответа, показываем сообщение и help # Если нет предопределенного ответа, показываем сообщение и help
keyboard = GAME_KEYBOARDS['main_menu'] keyboard = [
[InlineKeyboardButton("📋 Помощь", callback_data='cmd_help')],
[InlineKeyboardButton("🎮 Мини игры", callback_data='cmd_play_game')]
]
reply_markup = InlineKeyboardMarkup(keyboard) reply_markup = InlineKeyboardMarkup(keyboard)
await update.message.reply_text( await update.message.reply_text(
@@ -1233,7 +1248,10 @@ ID: {user_info['ID']}
async def show_start_menu(self, query): async def show_start_menu(self, query):
"""Показать стартовое меню""" """Показать стартовое меню"""
keyboard = GAME_KEYBOARDS['main_menu'] keyboard = [
[InlineKeyboardButton("📋 Помощь", callback_data='cmd_help')],
[InlineKeyboardButton("🎮 Мини игры", callback_data='cmd_play_game')]
]
reply_markup = InlineKeyboardMarkup(keyboard) reply_markup = InlineKeyboardMarkup(keyboard)
welcome_text = f""" welcome_text = f"""
@@ -1253,7 +1271,10 @@ ID: {user_info['ID']}
async def show_help_menu(self, query): async def show_help_menu(self, query):
"""Показать меню помощи""" """Показать меню помощи"""
keyboard = GAME_KEYBOARDS['help_menu'] keyboard = [
[InlineKeyboardButton("🚀 Старт", callback_data='cmd_start')],
[InlineKeyboardButton("🔄 Начать заново", callback_data='cmd_restart')]
]
reply_markup = InlineKeyboardMarkup(keyboard) reply_markup = InlineKeyboardMarkup(keyboard)
await query.edit_message_text(messages.HELP_TEXT, parse_mode='HTML', reply_markup=reply_markup) await query.edit_message_text(messages.HELP_TEXT, parse_mode='HTML', reply_markup=reply_markup)
BIN
View File
Binary file not shown.