telebot: UnboundLocalError: local variable 'x' referenced before assignmen


import telebot

x = int(0)

bot = telebot.TeleBot("Мой токен")

@bot.message_handler(commands = ['start'])
def send(message):
    x += 1
    bot.reply_to(message, "Счетчик: " + str(x))
    
    
bot.infinity_polling()

писал игрового бота в телеграм и столкнулся с ошибкой UnboundLocalEкror: local variable 'x' referenced before assignmen как я понял он просто не хочет делать вычисления почему? помогите пожалуйста бот должен при каждой команде старт увеличивать счетчик на единицу


Ответы (1 шт):

Автор решения: Vladimir Ignatenko

Так он же пишет в чем ошибка. Вы пытаетесь обрашаться к переменной, значение которой не было присвоенно.

В данном случае вам надо понимать, что x это две разные переменных. Одна глобальная - которую проинициализировали в начале программы. И вторая - это x с которой вы работаете внутри функции.

Чтобы работать с глобальной переменной внутри тела функции, то нужно сначала объявить, что она глобальная.

def send(message):
    global x
    x += 1
    bot.reply_to(message, "Счетчик: " + str(x))
→ Ссылка