Игра угадай число Telebot
Я решил сделать бота телеграм, где надо угадать число. Проблема в том что число одно и тоже, хотя переменная с рандомным числом находиться в цикле. Пытался засунуть 1 функцию, для угадывания числа в цикл, но вместо того чтобы нормально работать, бот начал выводить всегда одно и тоже сообщение. Заранее спасибо <3
from telebot import types
import telebot
import random
import config
bot = telebot.TeleBot(config.TOKENG)
while True:
@bot.message_handler(content_types=['text'])
def start(message):
if message.text == 'start':
bot.send_message(message.chat.id, 'Отгадайте число от 0 до 100, у вас 5 попыток')
bot.register_next_step_handler(message, number)
else:
bot.send_message(message.chat.id, 'Ошибка!')
rnumber = random.randint(0, 100)
def number(message):
if rnumber == int(message.text):
bot.send_message(message.chat.id, 'Вы отгадали число!')
return ()
elif rnumber < int(message.text):
bot.send_message(message.chat.id, 'Загаданное число меньше данного.')
bot.register_next_step_handler(message, number2)
elif rnumber > int(message.text):
bot.send_message(message.chat.id, 'Загаданное число больше данного.')
bot.register_next_step_handler(message, number2)
def number2(message):
if rnumber == int(message.text):
bot.send_message(message.chat.id, 'Вы отгадали число!')
return ()
elif rnumber < int(message.text):
bot.send_message(message.chat.id, 'Загаданное число меньше данного.')
bot.register_next_step_handler(message, number3)
elif rnumber > int(message.text):
bot.send_message(message.chat.id, 'Загаданное число больше данного.')
bot.register_next_step_handler(message, number3)
def number3(message):
if rnumber == int(message.text):
bot.send_message(message.chat.id, 'Вы отгадали число!')
return ()
elif rnumber < int(message.text):
bot.send_message(message.chat.id, 'Загаданное число меньше данного.')
bot.register_next_step_handler(message, number4)
elif rnumber > int(message.text):
bot.send_message(message.chat.id, 'Загаданное число больше данного.')
bot.register_next_step_handler(message, number4)
def number4(message):
if rnumber == int(message.text):
bot.send_message(message.chat.id, 'Вы отгадали число!')
return ()
elif rnumber < int(message.text):
bot.send_message(message.chat.id, 'Загаданное число меньше данного.')
bot.register_next_step_handler(message, number5)
elif rnumber > int(message.text):
bot.send_message(message.chat.id, 'Загаданное число больше данного.')
bot.register_next_step_handler(message, number5)
def number5(message):
if rnumber == int(message.text):
bot.send_message(message.chat.id, 'Вы отгадали число!')
return ()
elif rnumber < int(message.text):
bot.send_message(message.chat.id, 'Загаданное число меньше данного.')
bot.register_next_step_handler(message, fail)
elif rnumber > int(message.text):
bot.send_message(message.chat.id, 'Загаданное число больше данного.')
bot.register_next_step_handler(message, fail)
def fail(message):
bot.send_message(message.chat.id, f'Не угадал, загаданное число: {rnumber}')
print("Бот запущен!")
bot.polling(none_stop=True)
Ответы (1 шт):
Автор решения: oleksandrigo
→ Ссылка
Госпади боже, что вы написали? Не делайте так больше
@bot.message_handler(commands=['start'])
def start(message: types.Message):
rnumber = random.randint(0, 100)
bot.send_message(message.chat.id, 'Отгадайте число от 0 до 100, у вас 5 попыток')
bot.register_next_step_handler(message, get_number, 1, rnumber)
def get_number(message: types.Message, try_num: int, right_num: int):
if message.text.isdigit():
if right_num == int(message.text):
bot.send_message(message.chat.id, 'Вы отгадали число!')
else:
if try_num >= 4:
bot.send_message(message.chat.id, 'Мимо! Попытки кончились!')
return
if right_num < int(message.text):
bot.send_message(message.chat.id, 'Загаданное число меньше введенного.')
else:
bot.send_message(message.chat.id, 'Загаданное число больше введенного.')
bot.register_next_step_handler(message, get_number, try_num + 1, right_num)
else:
bot.send_message(message.chat.id, 'Вы ввели не число. Попробуйте еще раз.')
bot.register_next_step_handler(message, get_number, try_num, right_num)