Задать вопрос
@kavermoki
junior

Как получить доступ к локальной переменной?

форма регистрации:, где проблема с условием if db.get_signup

.......
from db import Database


@dp.message_handler()
async def bot_message(message: types.Message):
    if message.chat.type == 'private':
        if message.text == 'Профиль':
            pass
        else:
            if db.get_signup(message.from_user.id) == 'setnickname':
                if len(message.text) > 15:
                    await bot.send_message(message.from_user.id, "Ваш ник не должен превышать 15 символов")
                elif '@' in message.text or '/' in message.text:
                    await bot.send_message(message.from_user.id, 'Вы ввели запрещенный символ')
                else:
                    db.set_nickname(message.from_user.id, message.text)
                    db.set_signup(message.from_user.id, "done")
                    await bot.send_message(message.from_user.id, "Регистрация прошла успешно!", reply_markup=nav.mainMenu)
            else:
                await bot.send_message(message.from_user.id, 'Что?')


файл db. Весь копировать не буду.... только функцию, которую хочу вызвать:

import sqlite3

class Database:
    def __init__(self, db_file):
        self.connection = sqlite3.connect(db_file)
        self.cursor = self.connection.cursor()

    def get_signup(self, user_id):
        with self.connection:
            result = self.cursor.execute("SELECT 'signup' FROM 'users' WHERE 'user_id' = ?", (user_id,)).fetchall()
            for row in result:
                signup = str(row[0])
            return signup


пишет ошибку: UnboundLocalError: cannot access local variable 'signup' where it is not associated with a value

Я понимаю, что нет доступа к переменной signup, пытался сделать её глобальной - ничего не меняется. Что я упускаю?
  • Вопрос задан
  • 104 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Everything_is_bad
Я понимаю, что нет доступа к переменной signup, пытался сделать её глобальной - ничего не меняется. Что я упускаю?
нет, ты вообще не понимаешь причину. А причина проста, что будет в signup, если self.cursor.execute вернул в result пустой итератор? Поэтому всем ботописцам и тыкаем, учи сначала основы питона, порешай простые задачи, а только потом пиши ботов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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