Помогите с кодом с pytelegrambotapi - Telegram

Вопрос Помогите с кодом с pytelegrambotapi

Регистрация
5 Июн 2013
Сообщения
81
Репутация
0
Спасибо
0
Монет
0
flags = [

{'image': 'fr.jpg', 'answer': 'Франция'},

{'image': 'ge.jpg', 'answer': 'Германия'},

{'image': 'kz.jpg', 'answer': 'Казахстан'},

{'image': 'it.jpg', 'answer': 'Италия'},

{'image': 'ca.jpg', 'answer': 'Канада'},

{'image': 'be.jpg', 'answer': 'Беларусь'},

{'image': 'fi.jpg', 'answer': 'Финляндия'},

{'image': 'id.jpg', 'answer': 'Индия'},

{'image': 'uk.jpg', 'answer': 'Украина'},

{'image': 'sk.jpg', 'answer': 'Южная Корея'},

{'image': 'ar.jpg', 'answer': 'Аргентина'},

{'image': 'bo.jpg', 'answer': 'Болгария'},

{'image': 'ro.jpg', 'answer': 'Румыния'},

{'image': 'ch.jpg', 'answer': 'Китай'},

{'image': 'dm.jpg', 'answer': 'Дания'},

{'image': 'gr.jpg', 'answer': 'Греция'},

{'image': 'il.jpg', 'answer': 'Исландия'},

{'image': 'ki.jpg', 'answer': 'Кипр'},

{'image': 'bl.jpg', 'answer': 'Бельгия'},

{'image': 'am.jpg', 'answer': 'Армения'},

{'image': 'lt.jpg', 'answer': 'Литва'},

{'image': 'uz.jpg', 'answer': 'Узбекистан'},

{'image': 'eg.jpg', 'answer': 'Египет'},

{'image': 'az.jpg', 'answer': 'Азербайджан'},

{'image': 'pl.jpg', 'answer': 'Польша'},

{'image': 'ir.jpg', 'answer': 'Ирландия'},

{'image': 'es.jpg', 'answer': 'Эстония'},

{'image': 'ju.jpg', 'answer': 'ЮАР'},

{'image': 'lv.jpg', 'answer': 'Латвия'},

{'image': 'ba.jpg', 'answer': 'Бангладеш'},

{'image': 'al.jpg', 'answer': 'Албания'},

{'image': 'ka.jpg', 'answer': 'Катар'},

{'image': 'bu.jpg', 'answer': 'Бутан'},

{'image': 'gz.jpg', 'answer': 'Грузия'},

{'image': 'ke.jpg', 'answer': 'Кения'},

{'image': 'li.jpg', 'answer': 'Ливан'},

{'image': 'ma.jpg', 'answer': 'Мальта'},

{'image': 'si.jpg', 'answer': 'Сингапур'},

{'image': 'ur.jpg', 'answer': 'Уругвай'},

{'image': 'ta.jpg', 'answer': 'Танзания'},

{'image': 'tu.jpg', 'answer': 'Туркменистан'},

{'image': 'pa.jpg', 'answer': 'Парагвай'},

{'image': 'so.jpg', 'answer': 'Сомали'},

{'image': 'ab.jpg', 'answer': 'Антигуа и Барбуда'},

{'image': 'ef.jpg', 'answer': 'Эфиопия'},

{'image': 'ev.jpg', 'answer': 'Эсватини'},

{'image': 'se.jpg', 'answer': 'Сейшеллы'},

{'image': 'su.jpg', 'answer': 'Суринам'},

{'image': 'tv.jpg', 'answer': 'Тувалу'},

{'image': 'zi.jpg', 'answer': 'Замбабве'},

]

ind = 0



def send_flag(message):

global ind

if ind < len(flags):

with open(flags[ind]['image'], 'rb') as flag:

bot.send_photo(message.chat.id, flag)

keyboard = types.ReplyKeyboardMarkup()

bot.send_message(message.chat.id, "Отгадай страну", reply_markup=keyboard)

else:

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.")



Когда добавляю эту функцию в основной код выдает ошибку &#39;&lt;&#39; not supported between instances of &#39;_io.BufferedReader&#39; and &#39;int&#39; В чем причина и как это пофиксить
 
Регистрация
21 Июн 2013
Сообщения
96
Репутация
-3
Спасибо
0
Монет
0
Ваш код в целом правильный, но в нем есть некоторые моменты, которые можно улучшить. Основные проблемы включают отсутствие обработки кнопок и их текста, а также завершение игры, если пользователь ответил неправильно. Также рекомендуется добавить кнопку &#34;Начать заново&#34; после окончания игры.

Ошибка &lt;&#39; not supported between instances of &#39;_io.BufferedReader&#39; and &#39;int&#39; указывает на то, что где-то в коде происходит попытка сравнить объект типа _io.BufferedReader с числом int. Это может быть связано с тем, как используются переменные или объекты в коде.

В данном случае, вероятно, ошибка происходит в функции send_flag, где открывается файл. Давайте внимательно проверим эту функцию и убедимся, что все объекты используются корректно. Также добавим дополнительную проверку для минимизации ошибок.
import telebot
from telebot import types

# Инициализация бота
bot = telebot.TeleBot('YOUR_BOT_API_KEY')

flags = [
{'image': 'fr.jpg', 'answer': 'Франция'},
{'image': 'ge.jpg', 'answer': 'Германия'},
# я не буду писать весь этого тут так как мой ответ не поместится просто но чтобы ты понял суть ответа


{'image': 'su.jpg', 'answer': 'Суринам'},
{'image': 'tv.jpg', 'answer': 'Тувалу'},
{'image': 'zi.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.")


bot.polling()
 
Регистрация
17 Май 2013
Сообщения
88
Репутация
0
Спасибо
0
Монет
0
долпаеп который копирует чужие коды кто щас ботами в тг пользуется
 
Сверху Снизу