Python 试图列出最重要的;投票表决;带有特定反应表情符号的邮件

Python 试图列出最重要的;投票表决;带有特定反应表情符号的邮件,python,discord.py,Python,Discord.py,试着做一件事,你输入一个命令,然后得到一个前5条消息的列表,上面有一个名为:goldmedal:的反应表情符号。当进入bot时,一切都很好,但是当执行命令时,它会对它能找到的每一条消息启动一个无限的响应循环。并没有显示“金牌”的价值,而是对这一特定信息的所有反应 您在此的功能: def num_reactions(message): return sum(react_count for react in message.reactions) 仅获取对消息的不同反应数,而不是使用金牌表情

试着做一件事,你输入一个命令,然后得到一个前5条消息的列表,上面有一个名为:goldmedal:的反应表情符号。当进入bot时,一切都很好,但是当执行命令时,它会对它能找到的每一条消息启动一个无限的响应循环。并没有显示“金牌”的价值,而是对这一特定信息的所有反应

您在此的功能:

def num_reactions(message):
    return sum(react_count for react in message.reactions)
仅获取对消息的不同反应数,而不是使用金牌表情符号的反应数。您可能需要这样的内容:

def num_reactions(message):
    for react in message.reactions:
        if react.emoji.name === "goldmedal_emoji":
            return react.count
您的方法还存在许多长期问题:

  • 它只从日志中获取最后100条消息,因为日志的默认限制是100(除非这正是您想要的)
  • bot每次运行命令时都要搜索通道,这将很慢

  • 我可以推荐一种不同的方法来存储内存中最高的5个(希望不是RAM,而是数据库,或者其他持久性存储,如文本文件,以防您的机器人崩溃),当新邮件有更多的“goldmedal\u emoji”反应时,将其替换。

    欢迎使用StackOverflow。请按照您创建此帐户时的建议,阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。“效果不太好”不是一个问题。您发布的示例需要一些支持代码。
    def num_reactions(message):
        for react in message.reactions:
            if react.emoji.name === "goldmedal_emoji":
                return react.count