【问题标题】:Discord.js awaitReactions or on messageReactionAdd in private messageDiscord.js awaitReactions 或在 messageReaction 上添加私信
【发布时间】:2020-07-02 19:29:33
【问题描述】:

我创建了一个系统,允许用户在频道中发送投票,并希望在私人消息中为他们提供额外的选项。为此,我尝试在用户使用表情符号对此私人消息做出反应时切换投票选项。 服务器部分工作得很好,但我无法让私人消息反应按预期工作。

总之:当用户对带有表情符号的私人消息做出反应时,我正在尝试做一些事情。对于服务器通道,我已经很好地完成了这项工作。

为了测试这一点,我尝试了以下方法:

第一个似乎没有被私人消息调用。

client.on('messageReactionAdd', (reaction, user) => {
    console.log("added response");
});

client.on('messageReactionRemove', (reaction, user) => {
    console.log("removed response");
});

第二个是响应“!哔”命令而运行的测试代码。然而显示了一些问题:

  • 过滤器永远不会通过,“收集”永远不会被记录。
  • 过滤器仅在添加反应后才起作用(我认为这是因为异步,但我希望用户能够在按下反应时切换选项)
  • 删除反应时不会触发代码(我认为这是因为 awaitReactions 不支持,但我希望用户能够在按下反应时切换选项,无论他们是否正在添加或删除它)
  • 我尝试删除错误位,该位在时间结束后记录“已收集”。但我希望它具有响应性,因此是即时的,我还希望它可以重复使用,以便用户可以打开和关闭它。
const reactions = ["0️⃣", "1️⃣", "2️⃣", "3️⃣", "4️⃣", "5️⃣", "6️⃣", "7️⃣", "8️⃣", "9️⃣", "????"];

        message.channel.send('@here Boop :robot:')
            .then(async (sentMessage) => {
                for (var i=0; i < reactions.length; i++) {
                    await sentMessage.react(reactions[i]);
                }

                ///////////////   TEST CODE!!!!
                const filter = (reaction, user) => {
                    console.log("filter called");
                    return true;
                };
                sentMessage.awaitReactions(filter, { time: 33000, errors: ['time'] })
                    .then(collected => {
                        console.log("collected");

                        const reaction = collected.first();
                        console.log(reaction.emoji);
                    })
                    .catch(collected => {
                        console.log("Time's up");
                    });

            });;

TLDR:我想在私人消息中向用户提供投票配置面板,允许所述用户通过单击对所述配置面板的反应来切换选项。

我试过的东西没有用。难道我做错了什么?还有其他方法可以做到这一点吗?或者这根本不可能?

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    再调试一下发现问题所在,以防万一有人在这里遇到问题;

    这些确实有效,我只是有一个 if 语句妨碍了我 XD。

    client.on('messageReactionAdd', (reaction, user) => {
        console.log("added response");
    });
    
    client.on('messageReactionRemove', (reaction, user) => {
        console.log("removed response");
    });
    

    如果它们不起作用,则不会缓存消息。下面给出了一个很好的起点(虽然我还没有完全尝试过):

    【讨论】:

      猜你喜欢
      • 2021-05-11
      • 2021-05-31
      • 1970-01-01
      • 2021-05-23
      • 2018-12-09
      • 1970-01-01
      • 2019-08-03
      • 2019-10-19
      • 2023-03-15
      相关资源
      最近更新 更多