Добавление пользователей в бд sqlite3
У меня есть свой бот в дискорде, нужно чтобы если пользователя нет в бд, то он занесся туда, но вот не могу понять как это сделать в ивенте on_message.
@bot.event
async def on_message(message):
if cursor.execute(f"SELECT id FROM users WHERE id = {message.author.id}").fetchone()[0] is None:
cursor.execute(f"INSERT INTO users VALUES ({message.author.id}, 100, 'Нету', 0, 0)")
conn.commit()
cursor.execute(f"INSERT INTO inventory VALUES ({message.guild.id}, {message.author.id}, '')")
else:
pass
bot.process_commands(message)
Дает ошибку, в проверке есть ли у пользователя айди. Но как мне проверить его на None, если он кидает ошибку
Traceback (most recent call last):
File "C:\Users\semnf\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\client.py", line 343, in _run_event
await coro(*args, **kwargs)
File "c:\Users\semnf\OneDrive\Рабочий стол\DiscBot\hello.py", line 62, in on_message
if cursor.execute(f"SELECT id FROM users WHERE id = {message.author.id}").fetchone()[0] is None:
TypeError: 'NoneType' object is not subscriptable
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Сам fetchone вернет None при отсутствии данных (плюс добавил биндинг параметров):
if cursor.execute("SELECT id FROM users WHERE id = ?", (message.author.id,)).fetchone() is None:
...