类型错误:'NoneType'对象不可迭代 - SQLite 和 discord.py



函数将检查带有反应的通道是否是bot和用户之间的私有通道,然后执行其他操作。

代码:

@bot.event
async def on_raw_reaction_add(payload):
channel = bot.get_channel(payload.channel_id)
msg = await channel.fetch_message(payload.message_id)
emoji = payload.emoji
author = payload.member
if emoji.is_custom_emoji():
emoji_count = discord.utils.get(msg.reactions, emoji=emoji).count
else:
emoji_count = discord.utils.get(msg.reactions, emoji = emoji.name).count
cur.execute(f"SELECT discord_user_dmchannel_id FROM users WHERE discord_user_id = 
{int(payload.user_id)};")
print(cur.fetchone())
channel_dm_id_list = list(cur.fetchone())
channel_dm_id = channel_dm_id_list[0]
if payload.channel_id == channel_dm_id:
if int(emoji_count) > 1:
if emoji = ...

输出:

(782664385889959976,)
Ignoring exception in on_raw_reaction_add
Traceback (most recent call last):
File "C:UsersplaysAppDataLocalProgramsPythonPython38-32libsite-packagesdiscordclient.py", 
line 312, in _run_event
await coro(*args, **kwargs)
File "C:UsersplaysOneDriveРабочий столPythonbot2.py", line 130, in on_raw_reaction_add
channel_dm_id_list = list(cur.fetchone())
TypeError: 'NoneType' object is not iterable

表格列:

users(
discord_user_id INT PRIMARY KEY,
discord_user_dmchannel_id INT,
discord_user_name TEXT,
... 
...);

fetchone((正在返回下一行。在print(cur.fetchone())行中,您已经得到了第一行。在下一行channel_dm_id_list = list(cur.fetchone())中,您正试图获得第二个值。但由于没有第二个值,该方法返回None,这导致了您的错误。因此,要么删除打印语句,要么像这样存储第一个结果:

channel_dm_id_list = list(cur.fetchone())
print(channel_dm_id_list)

最新更新