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