为了账号安全,请及时绑定邮箱和手机立即绑定

Discord.js awaitReactions 或在 messageReaction 上添加私信

Discord.js awaitReactions 或在 messageReaction 上添加私信

qq_笑_17 2022-05-26 14:28:35
我创建了一个系统,允许用户在频道中发送投票,并希望在私人消息中为他们提供额外的选项。为此,我尝试在用户使用表情符号对此私人消息做出反应时切换投票选项。服务器部分工作得很好,但我无法让私人消息反应按预期工作。总结:当用户对带有表情符号的私人消息做出反应时,我正在尝试做一些事情。对于服务器频道,我已经很好地工作了。为了测试这一点,我尝试了以下方法:第一个似乎没有被私人消息调用。client.on('messageReactionAdd', (reaction, user) => {    console.log("added response");});client.on('messageReactionRemove', (reaction, user) => {    console.log("removed response");});第二个是响应“!beep”命令运行的测试代码。然而显示了一些问题:过滤器永远不会通过,“收集”永远不会被记录。过滤器仅在添加反应后才起作用(我认为这是因为异步,但我希望用户能够在按下反应时切换选项)删除反应时不会触发代码(我认为这是因为 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:我想在私人消息中向用户提供投票配置面板,允许所述用户通过单击对所述配置面板的反应来切换选项。我试过的东西没有用。难道我做错了什么?还有其他方法可以做到这一点吗?或者这根本不可能?
查看完整描述

1 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

在调试了更多之后,我发现了问题,因此以防万一有人在这里遇到问题;


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


client.on('messageReactionAdd', (reaction, user) => {

    console.log("added response");

});


client.on('messageReactionRemove', (reaction, user) => {

    console.log("removed response");

});


查看完整回答
反对 回复 2022-05-26
  • 1 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号