@ramcho_off

Как исправить 2 ошибки? UnboundLocalError: local variable 'key' referenced before assignment и underfiled name message?

у меня появляются 2 ошибки при запуске кода. В других строках (очень много было "message") все было окей.

Весь код:
import telebot
import random

from telebot import types

bot = telebot.TeleBot("не скажу")

@bot.message_handler(commands=['start'])
def welcome(message):

    # keyboard
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton(" Игры")
    item2 = types.KeyboardButton(" Новости")
    markup.add(item1, item2)

    bot.send_message(message.chat.id, "Добро пожаловать, {0.first_name}!\nЯ - <b>{1.first_name}</b>, бот созданный чтобы помогать людям!".format(message.from_user, bot.get_me()),
        parse_mode='html', reply_markup=markup)

@bot.message_handler(content_types=['text'])
def send_text(message):
    if message.text == ' Новости':
        bot.send_message(message.chat.id, "Новостей пока нет.")
    elif message.text == ' Игры':

        # keyboard
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        item1 = types.KeyboardButton( " Кубик")
        item2 = types.KeyboardButton( " Двери")
        markup.add(item1, item2)

        bot.send_message(message.chat.id, "Мои игры:".format(message.from_user, bot.get_me()), parse_mode='html', reply_markup= markup)
        if message.text == ' Кубик':
            key = telebot.types.InlineKeyboardMarkup()
        for el in [1,2,3,4,5,6]:
            but = telebot.types.InlineKeyboardButton(text=el, callback_data=f'Число {el}')
            key.add(but)
        bot.send_message(message.chat.id,  "Выберите число", reply_markup=key,parse_mode="Markdown")


@bot.callback_query_handler(func=lambda call:True)
def inlins(call):
    #print(call.data)
    if call.data.split()[0] == 'Число':
        bot.send_message(call.message.chat.id, "Кидаем кубик..." )
        my_random = random.randint(1,6)
        if my_random != int(call.data.split()[1]):
            bot.send_message(call.message.chat.id, "Вы проиграли, выпало число " + str(my_random) + " чтобы вернуться назад напишите /start" )
        else:
            bot.send_message(call.message.chat.id, "Вы выиграли! чтобы вернуться назад напишите /start")
        bot.edit_message_reply_markup(call.message.chat.id, call.message.message_id)

    if message.text == ' Двери':
        key = telebot.types.InlineKeyboardMarkup()
        for el in [1,2,3,4,5,6,7,8,9,10]:
            bot.send_message(message.chat.id,  "Выберите дверь", reply_markup=key,parse_mode="Markdown")
    else:
        bot.send_message(message.chat.id, 'Я не знаю что ответить ')


@bot.callback_query_handler(func=lambda call:True)
def inlin(call):
    #print(call.data)
    if call.data.split()[0] == 'Число':
        bot.send_message(call.message.chat.id, "Входим в дверь..." )
        my_random = random.randint(1,10)
        if my_random != int(call.data.split()[1]):
            bot.send_message(call.message.chat.id, "Вы проиграли, правильная дверь была " + str(my_random) + ". чтобы вернуться назад напишите /start" )
        else:
            bot.send_message(call.message.chat.id, "Вы выиграли! Вы выбрали правильную дверь! чтобы вернуться назад напишите /start")
        bot.edit_message_reply_markup(call.message.chat.id, call.message.message_id)

# RUN
bot.polling(none_stop=True)
  • Вопрос задан
  • 40 просмотров
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix
yellow
local variable 'key' referenced before assignment

Переводим, локальная переменная 'key' использована до объявления
Что-то добавляете в 'key', хотя не определили эту переменную
key.add(but)




underfiled name message

Переводим, неизвестная переменная message
Пытаетесь достать text из переменной, хотя у вас ее нет в функции
if message.text == ' Двери':
Ответ написан
Ваш ответ на вопрос

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

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