所以在这里,我试图得到一个反应,并检查它反应了什么表情符号。但是,我不确定如何做到这一点。
WarnMsg.react('⬅️')
.then(() => WarnMsg.react('➡️'))
.then(() => WarnMsg.react('?'))
const filter = (reaction, user) => user.id === receivedMessage.member.user.id
WarnMsg.awaitReactions(filter, { time: 30000, max: 1 })
.then(collected => {
console.log(collected)
if(reaction.emoji.name === '?'){
WarnMsg.delete()
receivedMessage.delete()
}
else if(reaction.emoji.name === '⬅️'){
if(PageNumber == 1)return
PageNumber = PageNumber - 1
}
这是我当前拥有的代码,但是我仍然对如何获取表情符号名称感到困惑。
答案 0 :(得分:1)
对于您的代码,collected返回collection
的反应,因此您需要获取第一个collection元素。
WarnMsg.react('⬅️')
.then(() => WarnMsg.react('➡️'))
.then(() => WarnMsg.react('?'))
const filter = (reaction, user) => user.id === receivedMessage.member.user.id
WarnMsg.awaitReactions(filter, { time: 30000, max: 1 })
.then(collected => {
const reaction = collected.first()
if(reaction.emoji.name === '?'){
WarnMsg.delete()
receivedMessage.delete()
}
else if(reaction.emoji.name === '⬅️'){
if(PageNumber == 1)return
PageNumber = PageNumber - 1
}
但是,如果您想处理1次以上的反应,那是不正确的方法。因为如果将max: 1
设置为max:40
,则事件.then(collected => {
仅在收集到所有反应或时间结束时触发。因此,您需要使用事件createReactionCollector
,然后您才能处理所有反应。
一些示例:
const filter = (reaction, user) => {
return ([`◀️`, '▶️'].includes(reaction.emoji.name) || [`667456912471883779`, '667456950207905824', '667456934718210059'].includes(reaction.emoji.id)) && user.id === message.author.id;
};
const collector = msg.createReactionCollector(filter, {
max: 50,
time: 60000,
});
collector.on('collect', (reaction, reactionCollector) => {
if (reaction.emoji.name === `◀️`) {
// do somethink
} else if (reaction.emoji.name === `▶️`) {
// do somethink
} else if (reaction.emoji.id === `667456912471883779`) {
// do somethink
} else if (reaction.emoji.id === `667456950207905824`) {
// do somethink
} else if (reaction.emoji.id === `667456934718210059`) {
// do somethink
}
});
collector.on('end', (reaction, reactionCollector) => {
msg.clearReactions();
});