首页 > 解决方案 > 嵌入 React 页面 Discord Js

问题描述

我通过在聊天中说“911”制作了一个机器人帮助命令列表。它为您提供了嵌入命令和 3 个反应按钮“前进”“后退”“删除”。它按预期工作,但不知道为什么我只能使用一次反应按钮。例如:我在第 1 页,我按下前进到 2,然后返回到 1,但是如果我想再次前进到 2,它不再响应。

DISCORD 聊天中的图片:https ://imgur.com/a/ndVjI79

  {            
               
               const embed = new Discord.MessageEmbed()
                
                .setDescription("*:vertical_traffic_light: :police_car: 911 / 112 / help for emergencies :police_car: :vertical_traffic_light:*")
                .setAuthor("**Necrophilia Police**")
                .setThumbnail('https://cdn.discordapp.com/avatars/766629801078685716/7daaa149ec7a8096357eda7805a56ecc.png?size=128')
                .setColor(0xC41E35)
                .setTitle("Commands for both DM and Server Messages")
                .addField("***:white_check_mark: For SERVER Messages:***", ":moneybag: `sunt horny ==> You are sent to horny jail`")
                .addField(":moneybag: `esti horny +tag ==> He/She is sent to horny jail`", ":moneybag: `nu sunt horny ==> Congrats from Garcea`")
                .addField(":moneybag: `nu este horny +tag ==> He/She congrats from Garcea`", ":moneybag: `what's your wisdom ==> Garcea's Wisdom`")
                .addField(":moneybag: `kekekek.... ==> Garcea laughs with you`", ":moneybag: `testos ==> testosu' ninja`")
                .addField(":moneybag: `fight/challenge/duel +anything ==> Prepare yo ass`", ":moneybag: `peepo the pet ==> Sending best meme`")
                .addField(":moneybag: `drug/drog/droage +anything ==> Garcea comes for you`", ":moneybag: `quiz ==> A quiz made by Garcea`")
                .addField(":moneybag: `today/time/day/date ==> Date and Time`", ":moneybag: `monke ==> mmmm M O N K E`")
                .addField(":moneybag: `-weather +location ==> Weather`", "`Example: -weather Iasi`")
                .addField(":moneybag: `-hangman ==> hangman minigame`", ":moneybag: `-random ==> random cursed image`")
                .addField(":moneybag: `-random +anything ==> random image of mention`", "`Example: -random cow ==> random cow image`")
                .addField(":moneybag: `vibe/vibing ==> Vibe Checking`", ":moneybag: `cat the bread ==> Sending 2nd meme`")
                message.channel.send({embed})
                        .then(m => {
                      m.react('➡️');

                       const filter = (reaction, user) => reaction.emoji.name === '➡️' && user.id === message.author.id;
                       const collector = m.createReactionCollector(filter, { max: 1, time: 5 * 60 * 1000 }); // 5 min
                      
                       collector.on('collect', async (reaction, user) => {
                       
                       reaction.users.remove(user.id);
                   
               var embed = new Discord.MessageEmbed()
                 .setDescription("*:vertical_traffic_light: :police_car: 911 / 112 / help for emergencies :police_car: :vertical_traffic_light:*")
                .setAuthor("**Necrophilia Police**")
                .setThumbnail('https://cdn.discordapp.com/avatars/766629801078685716/7daaa149ec7a8096357eda7805a56ecc.png?size=128')
                .setColor(0xC41E35)
                .setTitle("Commands for both DM and Server Messages")      
                .addField("***:white_check_mark: For DMs :***", ":moneybag: `-weather +location ==> Weather`")
                .addField(":moneybag: `hi/hello/howdy/hola/hey  ==> Garcea HIes you back`", ":moneybag: `drug/drog/droage +any ==> you'd better not say`")
                .addField(":moneybag: `fight/duel/challenge +anything ==> He beats yo ass`", ":moneybag: `today/time/day/date ==> Date and Time`")
                .addField(":moneybag: `quiz ==> A quiz made by Garcea`", ":moneybag: `how are you ==> Garcea's feelings`")
                .addField(":moneybag: `-hangman ==> hangman minigame`", ":moneybag: `anything besides commands ==> Something crazy`")
                .addField(":moneybag: `-random ==> random cursed image`", ":moneybag: `-random +anything ==> random image of mention`")
                .addField("`Example: -random cow ==> random cow image`", ":moneybag: `vibe/vibing ==> Vibe Checking`")
                       m.edit({embed});
                                             });
               
                 m.react("⬅️");
                       const filter2 = (reaction, user) => reaction.emoji.name === '⬅️' && user.id === message.author.id;
                       const collector2 = m.createReactionCollector(filter2, { max: 1, time: 5 * 60 * 1000 }); // 5 min
                      
                       collector2.on('collect', async (reaction, user) => {
                       
                       reaction.users.remove(user.id);

                var embed = new Discord.MessageEmbed()
                .setDescription("*:vertical_traffic_light: :police_car: 911 / 112 / help for emergencies :police_car: :vertical_traffic_light:*")
                .setAuthor("**Necrophilia Police**")
                .setThumbnail('https://cdn.discordapp.com/avatars/766629801078685716/7daaa149ec7a8096357eda7805a56ecc.png?size=128')
                .setColor(0xC41E35)
                .setTitle("Commands for both DM and Server Messages")
                .addField("***:white_check_mark: For SERVER Messages:***", ":moneybag: `sunt horny ==> You are sent to horny jail`")
                .addField(":moneybag: `esti horny +tag ==> He/She is sent to horny jail`", ":moneybag: `nu sunt horny ==> Congrats from Garcea`")
                .addField(":moneybag: `nu este horny +tag ==> He/She congrats from Garcea`", ":moneybag: `what's your wisdom ==> Garcea's Wisdom`")
                .addField(":moneybag: `kekekek.... ==> Garcea laughs with you`", ":moneybag: `testos ==> testosu' ninja`")
                .addField(":moneybag: `fight/challenge/duel +anything ==> Prepare yo ass`", ":moneybag: `peepo the pet ==> Sending best meme`")
                .addField(":moneybag: `drug/drog/droage +anything ==> Garcea comes for you`", ":moneybag: `quiz ==> A quiz made by Garcea`")
                .addField(":moneybag: `today/time/day/date ==> Date and Time`", ":moneybag: `monke ==> mmmm M O N K E`")
                .addField(":moneybag: `-weather +location ==> Weather`", "`Example: -weather Iasi`")
                .addField(":moneybag: `-hangman ==> hangman minigame`", ":moneybag: `-random ==> random cursed image`")
                .addField(":moneybag: `-random +anything ==> random image of mention`", "`Example: -random cow ==> random cow image`")
                .addField(":moneybag: `vibe/vibing ==> Vibe Checking`", ":moneybag: `cat the bread ==> Sending 2nd meme`")
                        m.edit({embed});
                   
                                });
                m.react("❌");
                       const filter3 = (reaction, user) => reaction.emoji.name === '❌' && user.id === message.author.id;
                       const collector3 = m.createReactionCollector(filter3, { max: 1, time: 5 * 60 * 1000 }); // 5 min
                       
                        collector3.on('collect', async (reaction, user) => {
                       
                        reaction.users.remove(user.id);
                        m.delete()

                          });
              });


  }

标签: javascriptreactjsdiscorddiscord.jsembed

解决方案


m.createReactionCollector(filter, { max: 1, time: 5 * 60 * 1000 })

您在此处指定的最大值是要收集的最大反应量。如果您不想限制最大反应量,您可以将最大值增加到较高的量,或者只删除该选项。

您可能还想添加一个 collecter2.on('end') 并删除所有反应并编辑嵌入以反映它已停止收集反应。


推荐阅读