谁能帮我解决这个错误?不和谐.py

这样做的目的是查看用户是否没有管理消息权限,然后根据他们所说的内容发送一条消息,这可以工作,但它会用这个错误填充我的控制台。这是我收到的错误:


Traceback (most recent call last):

  File "C:\Python38\lib\site-packages\discord\client.py", line 312, in _run_event

    await coro(*args, **kwargs)

  File "C:\Users\cuzto\Desktop\DiscordBot.-py\cogs\events.py", line 106, in on_message

    if not message.author.permissions_in(message.channel).manage_messages:

  File "C:\Python38\lib\site-packages\discord\user.py", line 232, in permissions_in

    return channel.permissions_for(self)

  File "C:\Python38\lib\site-packages\discord\channel.py", line 146, in permissions_for

    base = super().permissions_for(member)

  File "C:\Python38\lib\site-packages\discord\abc.py", line 475, in permissions_for

    roles = member.roles

AttributeError: 'User' object has no attribute 'roles'

这是代码:


    @commands.Cog.listener()

    async def on_message(self, message):

        if not message.author.permissions_in(message.channel).manage_messages:

            if "discord.gg" in message.content.lower():

                await message.delete()

                await message.channel.send(f"temp, <@{message.author.id}>")

有人会告诉我如何解决这个问题吗?我尝试了很多事情,但我不知道还能做什么


MMMHUHU
浏览 113回答 1
1回答

aluckdog

消息在 DM 中发送,而不是在服务器中发送。当 DM 发送时,message.author将是一个 User 对象,正如您所知,在 DM 中没有角色,所以它是一个错误。当消息在服务器中发送时,message.author将是一个Member对象,Guild中的User成为Member,因为服务器中有角色,Member.roles将有效。检查消息是否没有公会属性,然后返回@commands.Cog.listener()async def on_message(self, message):&nbsp; &nbsp; if not message.guild: return&nbsp; &nbsp; if not message.author.permissions_in(message.channel).manage_messages:&nbsp; &nbsp; &nbsp; &nbsp; if "discord.gg" in message.content.lower():&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; await message.delete()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; await message.channel.send(f"temp, <@{message.author.id}>")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python