这样做的目的是查看用户是否没有管理消息权限,然后根据他们所说的内容发送一条消息,这可以工作,但它会用这个错误填充我的控制台。这是我收到的错误: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.rolesAttributeError: '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}>")有人会告诉我如何解决这个问题吗?我尝试了很多事情,但我不知道还能做什么
1 回答

aluckdog
TA贡献1847条经验 获得超7个赞
消息在 DM 中发送,而不是在服务器中发送。
当 DM 发送时,message.author将是一个 User 对象,正如您所知,在 DM 中没有角色,所以它是一个错误。
当消息在服务器中发送时,message.author将是一个Member对象,Guild中的User成为Member,因为服务器中有角色,Member.roles将有效。
检查消息是否没有公会属性,然后返回
@commands.Cog.listener()
async def on_message(self, message):
if not message.guild: return
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}>")
添加回答
举报
0/150
提交
取消