带有表情符号的Discord.js排行榜只检测到一种反应

带有表情符号的Discord.js排行榜只检测到一种反应,discord.js,Discord.js,我为我的Discord服务器创建了一个经济型机器人,但我一直使用排行榜命令 此命令的目的是能够查看服务器上人员的排名10乘10,并显示其自己的排名。在我编写的代码中有两件事是不起作用的,但我只讨论其中一件,因为我认为我可以自己修复另一件 msg.awaitReactions((reaction, user) => (!user.bot) && (reaction.emoji.name == ${emotes.flechegauche} || reaction.emoji.n

我为我的Discord服务器创建了一个经济型机器人,但我一直使用排行榜命令

此命令的目的是能够查看服务器上人员的排名10乘10,并显示其自己的排名。在我编写的代码中有两件事是不起作用的,但我只讨论其中一件,因为我认为我可以自己修复另一件

msg.awaitReactions((reaction, user) => (!user.bot) && (reaction.emoji.name == ${emotes.flechegauche} || reaction.emoji.name == ${emotes.flechedroite}), { max: 1, time: 30000 }).then(collected => {

   if (**collected.first()**.emoji.name == ${emotes.flechegauche}) {
      ...
问题是我想检测用户的每一个反应,但只检测第一个反应。我知道问题是我把“collected.first()”放在了上面,但我读了文档,不知道该把代码改成什么(我不习惯读文档,英语不是我说得很流利的语言,所以这没用)

我在这个网站上搜索,如果其他人问过这个问题,我会看到这个帖子: 回答的人说使用ReactionCollector,这是否意味着我必须改变收集表情符号的整个方式或方法才能奏效


(因为这是我第一次在这个网站上提问,如果你有任何建议或评论,我很感兴趣)

使用
方法是完全可能的。我主要用于指导。我建议您查看这本
discord.js
指南,以帮助您入门


过程:
  • 创建嵌入并将其发送到频道
  • 设置一个
    方法来收集第一个响应
  • 使用
    then()
    方法来编辑嵌入
  • catch()
    方法放在这里,以防用户没有响应

  • 注: 似乎您没有创建
    过滤器
    函数,而是将其作为
    方法中的第一个参数。这同样有效,但我更喜欢创建函数,因为它更容易理解代码中发生了什么。我想说的是,这取决于你自己的喜好


    下面是一个示例,您可以相应地修改它以适合您的代码

    代码:
    const embed=new Discord.MessageEmbed()
    .setTitle('反应嵌入')
    .setDescription('待反应后更改')
    const msg=wait message.channel.send(嵌入);
    常量过滤器=(反应,用户)=>{
    
    return reaction.emoji.name==='您不必更改它,也可以使用
    waitreactions
    方法。下面是一些详细信息:。您似乎已经将约束设置为
    {max:1}
    。这就是你所需要的。你基本上可以摆脱
    first
    方法,因为你只收集了一个反应。当删除
    .first()
    时,我有一个错误
    类型错误:无法读取未定义的
    的属性“name”。你的消息向我指出了
    {max:1}
    是一个错误,我刚刚删除了它,现在我必须等到计时器结束时才能编辑消息(当我将
    .first()
    保留在收集的末尾时)。是否还有一种方法可以在反应后直接编辑消息,而不只考虑第一个反应?
    收集。first()
    实际上很好,我忘了它会返回一个集合,所以您必须从所有收集的反应中选择一个。另外,保留
    {max:1}
    ,这样您就可以只记录第一个反应。当我使用
    collected.first()时
    ,消息只检测到第一个反应,单击另一个反应不再修改消息。需要一种方法来逐个检测所有反应,但我没有找到如何检测多个反应。哦,好吧。我误解了你的问题。是的,那么不要添加
    {max:1}
    或者将其更改为您试图收集的不同数量的反应。