@beckonmeon

Что делать с ошибкой в написание бота для телеграмма игры Угадай число?

Есть код бота который загадывает число от 1 до 100, хочу сделать код без использования глобальной переменной, перерыл куча материалов но выдаёт ошибку которую я никак не могу побороть с использованием этой самой глобальной рандомной переменной

Код
import random
import telebot

bot = telebot.TeleBot('токен')

@bot.message_handler(commands=['help', 'start'])
def welcome(message):
    bot.reply_to(message, 'Поиграем в "Угадай число"?\nЯ загадал число от 1 до 100, сможешь угадать?')
    n = random.randint(1, 100)
    bot.register_next_step_handler(message, number_guess, n)

def number_guess(message, n):
    try:
        number = message.text
        if not number.isdigit():
            bot.send_message(message.chat.id, 'Это не число')
            bot.register_next_step_handler(message, number_guess)
            return
        if int(number) > n:
            bot.send_message(message.chat.id, ("Ваше число больше загаданного"))
            bot.register_next_step_handler(message, number_guess)
        elif int(number) < n:
            bot.send_message(message.chat.id, ("Ваше число меньше загаданного"))
            bot.register_next_step_handler(message, number_guess)
        else:
            bot.send_message(message.chat.id, ("Угадал"))
    except ValueError:
        bot.send_message(message, ("это не число"))



bot.polling(none_stop=True, interval=0)

Сам код ошибки

Путь\venv\Scripts\python.exe Путь/main.py
Traceback (most recent call last):
File "Путь\main.py", line 35, in
bot.polling(none_stop=True, interval=0)
File "Путь\venv\lib\site-packages\telebot\__init__.py", line 658, in polling
self.__threaded_polling(non_stop, interval, timeout, long_polling_timeout, allowed_updates)
File "Путь\venv\lib\site-packages\telebot\__init__.py", line 720, in __threaded_polling
raise e
File "Путь\venv\lib\site-packages\telebot\__init__.py", line 680, in __threaded_polling
self.worker_pool.raise_exceptions()
File "Путь\venv\lib\site-packages\telebot\util.py", line 135, in raise_exceptions
raise self.exception_info
File "Путь\venv\lib\site-packages\telebot\util.py", line 87, in run
task(*args, **kwargs)
TypeError: number_guess() missing 1 required positional argument: 'n'
  • Вопрос задан
  • 320 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
@bot.message_handler(func=lambda message: True)
Удалить декоратор. Зачем он, если функция работает только с помощью register_next_step_handler
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы