我正在尝试建立一个系统,使用户可以对消息做出反应,并且它会以一些文本进行回复。文字会有所不同,具体取决于他们对哪些表情符号做出了反应。我已经研究了反应收集器,但仍在努力寻找我想做的事的例子。
这是我正在使用的基本代码,是从Discord的集合here指南中获得的。
message.react('?');
const filter = (reaction, user) => {
return reaction.emoji.name === '?';
};
const collector = message.createReactionCollector(filter, { max: 100 });
collector.on('collect', (reaction, user) => {
message.channel.send('Collecting...')
});
collector.on('end', collected => {
message.channel.send('Done');
});
该代码有效,但是无论与哪个表情符号反应,它都将执行collector.on('collect'...
中的代码。我希望能够执行不同的代码,例如,当用户对不同的表情符号做出反应时,发送不同的嵌入。谢谢!
答案 0 :(得分:1)
您的收集器过滤器将仅收集?
个表情符号,因此您应该删除该表情符号,以便在添加其他反应时使机器人具有不同的行为。您可以使用reaction
和user
参数来确定要执行的操作:
// This will make it collect every reaction, without checking the emoji
const collector = message.createReactionCollector(() => true, { max: 100 })
collector.on('collect', (reaction, user) => {
if (reaction.emoji.name == '?') {
// The user has reacted with the ? emoji
} else {
// The user has reacted with a different emoji
}
})
collector.on('end', collected => {
// The bot has finished collecting reaction, because either the max number
// has been reached or the time has finished
})
在这些if/else
语句中,您可以添加所需的任何内容(发送消息,嵌入等)