@HelpMeeee

Как реализовать систему вопросов в телеграм боте?

Здравствуйте!
Хочу создать бота в телеграм, который будет проводить игру вопрос-ответ.
Проблема такая, что бот сам реагирует на свой же вопрос. То есть он задает вопрос, сверяет его с ответом и пишет ошибку.
Пробовал добавлять 1 к message.chat.id, не помогает.
Кто знает как решить проблему?

Сам код -
@bot.message_handler(content_types=["text"])
def type_game(message):
    if message.text == "Мои данные":
        bot.send_message(message.chat.id,"Баланс: " + "/n" +
                         "Игр сыграно: " + "/n" +
                         "Правильных ответов: ")
    if message.text == "Бесплатная игра":
        bot.send_message(message.chat.id, "Чтобы начать введите /free_game")

    if message.text == "Платная игра":
        bot.send_message(message.chat.id,"Баланс: "  "/n" 
                         "Игр сыграно: " + "/n" +
                         "Правильных ответов: ")

@bot.message_handler(commands=["free_game"])
def free_game(message):
    bot.send_message(message.chat.id, SQLighter.answer)
    if message.text == SQLighter.answer:
        bot.send_message(message.chat.id+1, "Good")
    else:
        bot.send_message(message.chat.id+1, "Bad")
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
MinTnt
@MinTnt
1). Вообще, добавление к message.chat.id + 1, ничего бы не дало, кроме того, что сообщение бы отправилось вообще незнакомому лицу. message.chat.id, это то куда отправляется сообщение

2). Предложу другую реализацию для комманд в коде.
Код
skill = 0 #Просто добавил счётчик "скилла" правильных и неправильных ответов

@bot.message_handler(content_types=["text"])
def type_game(message):
    if message.text == "Мои данные":
        bot.send_message(message.chat.id,"Баланс: " + "/n" +
                         "Игр сыграно: " + "/n" +
                         "Правильных ответов: ")
    if message.text == "Бесплатная игра":
        bot.send_message(message.chat.id, "Чтобы начать введите /free_game")

    if message.text == "Платная игра":
        bot.send_message(message.chat.id,"Баланс: "  "/n" 
                         "Игр сыграно: " + "/n" +
                         "Правильных ответов: ")
    if message.text == '/free_game': #Другой варянт создания комманд
    	bot.send_message(message.chat.id, SQLighter.answer)
    	bot.register_next_step_handler(message, free_game)#Перенаправил на функцию free_game

def free_game(message):
    if message.text == SQLighter.answer:
        bot.send_message(message.chat.id, "Good")
        skill = skill + 1
        bot.send_message(message.chat.id, SQLighter.answer)
        bot.register_next_step_handler(message, free_game)#Создаёт некий цикл, после ответа, оно занова запускает эту функцию, а так же пишет вопрос из базы данных
    elif message.text == 'Прекратить игру':
    	bot.send_message(message.chat.id, 'Игра приостановлена.')#Так как тут нету register next step и тд., то оно автоматически переадресовывает на type_game

    else:
    	skill = skill - 1
        bot.send_message(message.chat.id, "Bad")
        bot.send_message(message.chat.id, SQLighter.answer)
        bot.register_next_step_handler(message, free_game)


А вообще, мне вот интересно, это хорошо что в коде, DQLighter.answer используется как для вопроса, так и для ответа? Или это пока так.. лишь для проверки системы?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
18 мая 2024, в 20:58
5000 руб./за проект
18 мая 2024, в 20:53
500 руб./за проект
18 мая 2024, в 20:24
200000 руб./за проект