@Frebx

Как сдплать правильную проверку айди юзера и БД?

Я сделал БДшку - вайтлист, в которую по команде я могу добавить айди юзера и это айди туда сохраняется. Но когда я пытаюсь вызвать айди юзера из БДшки и сравнить его с айди юзера из чата, он проверяет как то не так, айди в БД есть, а проверка говорит, что нету доступа в порядке.

Код из db.py:

import sqlite3
cursor.execute("CREATE TABLE white(adduser_id INT)")

def get_users(adduser_id):
db = sqlite3.connect('data.db', check_same_thread=False)
cursor = db.cursor()
cursor.execute("SELECT adduser_id FROM white WHERE adduser_id=?", (adduser_id, ))
rows = cursor.fetchone()
print(rows)
return rows

Код проверки из main.py:

@dp.message_handler(commands=['checkwhite'])
async def close_bot(message: types.Message):
if db.get_users_exist(message.chat.id) == True:
if message.chat.id == db.get_users(message.chat.id):
await bot.send_message(chat_id=message.chat.id, text='Добро пожаловать')
print(db.get_users(message.chat.id))
else:
await bot.send_message(chat_id=message.chat.id, text='у тебя нету прав')
print(db.get_users(message.chat.id))
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
fetchone возвращает кортеж (tuple), который вы сравниваете с целочисленным chat_id.
Замечания:
Используйте CREATE TABLE IF NOT EXISTS ...
Cтилистически, get_users, rows - почему названия во множественном числе, если работа идёт с единичными объектами?
Ответ написан
@nozzy
Symfony, Laravel, SQL
У тебя идет проверка в db.get_users_exist, где возвращается False и до проверки db.get_users не доходит. Ну и стилистика конечно, команда бота checkwhite, вызывает функцию close_bot) Если из инета надергал код из разных мест, хоть как то его обрабатывай.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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