@Meezmo
Python, C# programmer

Как сделать чтобы телеграм бот не брал предыдущее сообщение, а спрашивал новое?

Решил сделать казино. Все работает, но есть одна проблема. Когда я ввожу ставку в первый раз
бот не спрашивает её в следующий раз, а берет предыдущее сообщение. И в итоге у меня получаеться вот это:
60cb8bf263354187658082.png

Вот мой код:

import random
import telebot
bot = telebot.TeleBot('мой токен')
@bot.message_handler(content_types=['text'])
def get_text_messages(message):
    balance = 100
    while 1==1:
        bot.send_message(message.from_user.id, "Ставка: ")
        bet= (int(message.text))
        if bet>balance:
            bot.send_message(message.from_user.id, "Недостаточно монет")
            continue
        res = random.randint(1,2)
        if res == 1:
            balance = balance + bet
            bot.send_message(message.from_user.id, "Вы выиграли!")
        else:
            balance = balance - bet
            bot.send_message(message.from_user.id, "Вы проиграли!")
        bot.send_message(message.from_user.id, "Баланс: "+str(balance))
bot.polling(none_stop=True, interval=0)


Извините что написал так непонятно, просто не знаю как это обьяснить.
  • Вопрос задан
  • 615 просмотров
Решения вопроса 1
@twistfire92
Python backend developer
Вам стоит использовать register_next_step_handler
гуглится за 5 минут, на гитхабе библиотеки telebot есть примеры использования. Тут тоже много вопросов было по этой функции

UPD:
Избавляйтесь от бесконечного цикла! он вам не нужен
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Проблема в том, что хендлер принял объект message, после чего у вас идет выполнение цикла while 1==1, в котором bet=(int(message.text)) никогда не изменяется.

Также перед тем как приводить message.text в int стоит проверить сообщение содержит только цифры или нет
if (message.text).isdigit():
   bet=(int(message.text))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы