我在不和谐中有自己的机器人,如果用户不在数据库中,那么他必须在那里输入,但我无法在 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)
检查用户是否有 id 时出错。但是如果它抛出错误,我如何检查它是否为 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
fetchone
它将在没有数据的情况下返回自身None
(加上添加的参数绑定):