如何检测嵌入物上的反应,然后根据反应是什么来执行操作?

时间:2019-09-25 21:12:26

标签: javascript bots discord discord.js

我尝试使用几种不同类型的反应收集器,但它们似乎都不起作用,我将提供一些代码,以便您可以看到我尝试过的最新内容。

总结一下我的想法,我让机器人在运行某个命令时将嵌入文本的内容发送到通道,先发送嵌入内容,然后对两个不同的选项做出反应,然后我希望它等待用户选择这些反应之一(基本上会与漫游器使用的反应之一再次发生反应),然后根据用户选择的反应执行操作,我希望它删除嵌入内容然后执行操作。

message.channel.send(embedOne)
    .then(m => m.react('?'))
    .then(r => r.message.react('?'))
    .catch(m => {

        console.error('Emoji failed to react.');
    })
    const reactFilter = (reaction, user) => reaction.emoji.name === '?'
        .then(embedOne => embedOne.awaitReactions(reactFilter, { max: 1}))
        .then(collected => {

            message.channel.send(`You reacted wtih ${reaction.emoji.name}`)
            m.delete()
        })
        .catch(console.error)
    }

1 个答案:

答案 0 :(得分:0)

您需要在消息上调用awaitReactions,因此在您的代码中它将为“ m”,因此代码应类似于以下内容。

message.channel.send(embedOne)
.then(m => {
    m.react('?')
    .then(r => {
        const reactFilter = (reaction, user) => reaction.emoji.name === '?'
        m.awaitReactions(reactFilter, { max: 1})
        .then(collected => {
            message.channel.send(`You reacted wtih ${reaction.emoji.name}`)
            m.delete()
    })
    .catch(console.error)
    })
})