命令运行良好,但每当我打开机器人时都会出错.[discord.py]



所以我有这个代码作为前缀。我对它没有问题。它运行得很好,但每当我给我的机器人发消息时,它都会给我这个错误。有什么可以忽略或修复的吗?感谢

with open("prefix.json") as f:
prefixes = json.load(f)
default_prefix = "?"
def prefix(client, message):
id = message.guild.id
return prefixes.get(id, default_prefix)
client = commands.Bot(command_prefix=prefix)
@client.command(name="Prefix", aliases=["prefix", "setprefix"])
@commands.has_permissions(manage_guild=True)
async def _prefix(ctx, new_prefix):
msg = ctx.message
prefixes[msg.guild.id] = new_prefix
with open("prefix.json", "w") as f:
json.dump(prefixes, f, indent=4)
Error:
Ignoring exception in on_message
Traceback (most recent call last):
File "C:UsersuserAppDataLocalProgramsPythonPython38-32libsite-packagesdiscordclient.py", line 312, in _run_event
await coro(*args, **kwargs)
File "C:UsersuserAppDataLocalProgramsPythonPython38-32libsite-packagesdiscordextcommandsbot.py", line 930, in on_message
await self.process_commands(message)
File "C:UsersuserAppDataLocalProgramsPythonPython38-32libsite-packagesdiscordextcommandsbot.py", line 926, in process_commands
ctx = await self.get_context(message)
File "C:UsersuserAppDataLocalProgramsPythonPython38-32libsite-packagesdiscordextcommandsbot.py", line 842, in get_context
prefix = await self.get_prefix(message)
File "C:UsersuserAppDataLocalProgramsPythonPython38-32libsite-packagesdiscordextcommandsbot.py", line 787, in get_prefix
ret = await discord.utils.maybe_coroutine(prefix, self, message)
File "C:UsersuserAppDataLocalProgramsPythonPython38-32libsite-packagesdiscordutils.py", line 317, in maybe_coroutine
value = f(*args, **kwargs)
File "C:/Users/user/Desktop/test.py", line 14, in prefix
id = message.guild.id
AttributeError: 'NoneType' object has no attribute 'id'

message.guild将是所有DM的None(因为它们不是作为公会发送的(。您应该在prefix函数中为此添加一个事例。

def prefix(client, message):
if not message.guild:
return default_prefix
id = message.guild.id
return prefixes.get(id, default_prefix)

最新更新