bot.send_message(message.chat.id, "Игра окончена! Вы угадали все флаги!")
@bot.message_handler(commands=['game'])
def cmd_game(message):
global ind
ind = 0 # Сбросить индекс флага для новой игры
send_flag(message)
@bot.message_handler(func=lambda message: True)
def handle_message(message):
global ind
if ind < len(flags):
correct_answer = flags[ind]['answer']
if message.text == correct_answer:
bot.send_message(message.chat.id, "Правильно!")
ind += 1
send_flag(message)
else:
bot.send_message(message.chat.id, "Неправильно! Игра окончена.")
else:
bot.send_message(message.chat.id, "Игра окончена! Запустите новую игру командой /game.")
Когда добавляю эту функцию в основной код выдает ошибку '<' not supported between instances of '_io.BufferedReader' and 'int' В чем причина и как это пофиксить
Ваш код в целом правильный, но в нем есть некоторые моменты, которые можно улучшить. Основные проблемы включают отсутствие обработки кнопок и их текста, а также завершение игры, если пользователь ответил неправильно. Также рекомендуется добавить кнопку "Начать заново" после окончания игры.
Ошибка <' not supported between instances of '_io.BufferedReader' and 'int' указывает на то, что где-то в коде происходит попытка сравнить объект типа _io.BufferedReader с числом int. Это может быть связано с тем, как используются переменные или объекты в коде.
В данном случае, вероятно, ошибка происходит в функции send_flag, где открывается файл. Давайте внимательно проверим эту функцию и убедимся, что все объекты используются корректно. Также добавим дополнительную проверку для минимизации ошибок.
import telebot
from telebot import types
flags = [
{'image': 'fr.jpg', 'answer': 'Франция'},
{'image': 'ge.jpg', 'answer': 'Германия'},
# я не буду писать весь этого тут так как мой ответ не поместится просто но чтобы ты понял суть ответа
# Используем глобальный индекс для отслеживания текущего флага
current_index = 0
def send_flag(chat_id):
global current_index
if current_index < len(flags):
flag_path = flags[current_index]['image']
try:
with open(flag_path, 'rb') as flag_file:
bot.send_photo(chat_id, flag_file)
bot.send_message(chat_id, "Отгадай страну")
except FileNotFoundError:
bot.send_message(chat_id, f"Ошибка: файл {flag_path} не найден.")
current_index += 1
send_flag(chat_id)
else:
markup = types.ReplyKeyboardMarkup(one_time_keyboard=True)
markup.add('Начать заново')
bot.send_message(
chat_id, "Игра окончена! Вы угадали все флаги!", reply_markup=markup)
@bot.message_handler(commands=['game'])
def start_game(message):
global current_index
current_index = 0 # Сбросить индекс флага для новой игры
send_flag(message.chat.id)
@bot.message_handler(func=lambda message: True)
def handle_answer(message):
global current_index
if current_index < len(flags):
correct_answer = flags[current_index]['answer']
if message.text.strip().lower() == correct_answer.strip().lower():
bot.send_message(message.chat.id, "Правильно!")
current_index += 1
send_flag(message.chat.id)
else:
markup = types.ReplyKeyboardMarkup(one_time_keyboard=True)
markup.add('Начать заново')
bot.send_message(
message.chat.id, "Неправильно! Игра окончена.", reply_markup=markup)
elif message.text == 'Начать заново':
start_game(message)
else:
bot.send_message(
message.chat.id, "Игра окончена! Запустите новую игру командой /game.")