# варианты выбора для котов
cat_choices = {
1: (2, 3, 1),
2: (4, 1, 2),
...
}
# функция, которая склоняет котов: по их количеству
# возвращает человекочитабельную строку
def get_cats_str(count:int):
if count == 1: return "1 кот"
elif count < 5: return f"{count} кота"
else: return f"{count} котов"
if message.text == 'game':
random_number = randint(1,5)
# конструкция with используется для того, чтобы файл
# автоматически был закрыт при выходе из блока with
with open(f"game/{random_number}.jpg", "rb") as cat_image_file:
bot.send_photo(message.chat.id, cat_image_file)
markup = types.ReplyKeyboardMarkup(resize_keyboard = True)
cats = cat_choices[random_number]:
variant1 = types.KeyboardButton(get_cats_str(cats[0])
variant2 = types.KeyboardButton(get_cats_str(cats[1])
variant3 = types.KeyboardButton(get_cats_str(cats[2])
markup.add(variant1, variant2, variant3)
bot.send_message(message.chat.id, 'Выбери правильный вариант ответа', reply_markup = markup)
else:
# берём первое число перед первым пробелом, для простоты не проверяем, что там дальше "коты"
cats_count = message.text.split(" ")[0]
if cats_count.isdigit():
cats_count = int(cats_count)
if cats_count == random_number:
# это верный ответ
else:
# это неверный ответ
else: # не число:
bot.send_message(message.chat.id, 'Так сколько котов-то?")
user_random_number = {}
...
if message.text == 'game':
user_random_number[message.chat.id] = randint(1,5)