Задать вопрос
@liquidname

Pytelegrambotapi name 'a' is not defined, почему?

Есть бот с БД, в которой есть id и баланс. Нужно вывести баланс, я делаю это через переменную, но она не определяется. Почему она не определяется?
import telebot
from telebot import types
import sqlite3

#bot
bot = telebot.TeleBot("токич")


@bot.message_handler(commands=['start'])
def start(message):
    connect = sqlite3.connect('acc.db')
    cursor = connect.cursor()

    cursor.execute("""CREATE TABLE IF NOT EXISTS login(
        id INTEGER,
        balance INTEGER)
    """)

    connect.commit()

    #Проверка id
    u_id = message.chat.id
    cursor.execute(f"SELECT id FROM login WHERE id = {u_id}")
    data = cursor.fetchone()
    if data is None:
        #Добавление значений
        user_id = [message.chat.id]
        cursor.execute("INSERT INTO login VALUES(?, ?);",[user_id, 0])
        connect.commit()

    #клавиатура
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton("✔Согласиться с правилами")

    markup.add(item1)

    #сообщение
    bot.send_message(message.chat.id,'Пользовательское соглашение ✏️\n'
                     'не грустить\nопределить переменную a'
                     parse_mode='html', reply_markup=markup)

@bot.message_handler(content_types=['text'])
def lalala(message):
    global a
    connect = sqlite3.connect('acc.db')
    cursor = connect.cursor()

    for value in cursor.execute("""SELECT * FROM login"""):
        a = value[1] #эта a не определяется
    if message.text == '✔Согласиться с правилами':
        bot.send_message(message.chat.id,f'Баланс: {a}') #тут она не определяется
  • Вопрос задан
  • 91 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 2
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Потому что в глобал оно не объявлено.
Ответ написан
OSMANOF
@OSMANOF
Segmentation fault
Зачем нужно проходиться по циклу и назначать а значение value[1]. Почему бы не написать
a = cursor.execute("""SELECT * FROM login""").fetchall()[-1][1]

эффект такой же. Но не это ответ.
#эта a не определяется

Она определяется. Не определяется вот здесь global a
Есть два решения:
1. Определить глобальную переменную а
2. Удалить global a
Пользуйтесь на здоровье любым удобным способом.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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