我正在尝试使用“!invite”命令生成到服务器的invite链接,并将其发送到用户的DM。 该命令有效,但控制台上出现以下错误:
Ignoring exception in on_message
Traceback (most recent call last):
File "C:\Users\001\Envs\Pix\lib\site-packages\discord\client.py", line 343, in _run_event
await coro(*args, **kwargs)
File "C:\Users\001\PycharmProjects\Testing bot\cogs\invite.py", line 27, in on_message
if ctx.author.guild_permissions.administrator:
AttributeError: 'ClientUser' object has no attribute 'guild_permissions'
然而,我得到了链接:My DM screenshot.
如何修复此错误
代码:
from discord.ext import commands
from var.canais import inviteChannel
class Invite(commands.Cog):
def __init__(self, client):
self.client = client
@commands.command(
name='invite',
pass_context=True
)
async def invite(self, ctx):
invitelink = await ctx.channel.create_invite(
max_uses=1,
unique=True
)
if inviteChannel:
await ctx.message.delete()
await ctx.author.send(f'Invite link: {invitelink}')
@commands.Cog.listener()
async def on_message(self, ctx):
if inviteChannel:
if ctx.author.guild_permissions.administrator:
return
else:
if not ctx.content.startswith('!invite'):
await ctx.delete()
def setup(client):
client.add_cog(Invite(client))
发生此错误的原因是,当bot发送消息时也会调用on_message事件,并且在您的情况下,bot是在dm中发送消息的,因此它应该是用户对象(成员对象仅限于帮会),并且用户对象没有权限,因为它们不在服务器内。它是一个ClientUser对象,而不是User,后者是一个特殊的类,类似于User,是bot所特有的。与User相比,这是一个单独的类,因为它有一些只有bot才能使用的特殊方法,比如编辑bot名称等 若要修复此问题,请忽略消息是否从bot发送,这样代码将
在这里,我添加了
if message.author.bot: return
,以便在作者是机器人时停止函数执行。我还删除了不必要的else语句正如错误所说: 线路
抛出AttributeError错误,因为“ctx.author”(ClientUser类型)没有guild_permissions属性
错误信息还意味着错误被忽略,因此代码将继续执行而不停止
我找到了this 回答可能帮助您克服此问题的问题
祝你好运
相关问题 更多 >
编程相关推荐