首页 > 解决方案 > 命令引发异常:AttributeError: 'str' object has no attribute 'custom_emoji'

问题描述

我正在尝试创建一个命令,将所有对特定消息做出反应的成员的姓名打印到我的控制台中。但是,它给了我一个错误:

    @commands.command()
    async def whoreacted(self, ctx, message):
        for Member in discord.Reaction.users(message):
            memberlist = Member.name
            print(memberlist)
        await ctx.send('finished!')

标签: pythonpython-3.xdiscord.pydiscord.py-rewrite

解决方案


  1. 您指的是类本身,而不是实例。以下是不同之处
  2. 它的message参数将是一个字符串而不是一个discord.Message实例,你应该使用MessageConverter它来获取它。
  3. 要获得对消息做出反应的用户,您需要使用嵌套循环

这是您的固定代码

@commands.command()
async def whoreacted(self, ctx, message: discord.Message):
    for reaction in message.reactions: # Iterating through every reaction
        async for user in reaction.users(): # Going through every member that reacted with that reaction
            print(user.name)

    await ctx.send('Finished')

推荐阅读