這樣做的目的是查看用戶是否沒有管理消息權限,然后根據他們所說的內容發送一條消息,這可以工作,但它會用這個錯誤填充我的控制臺。這是我收到的錯誤: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
提交
取消