如何让 discord bot 等待回复 5 分钟然后发送消息?使用不和谐的 js

Posted

技术标签:

【中文标题】如何让 discord bot 等待回复 5 分钟然后发送消息?使用不和谐的 js【英文标题】:How to make discord bot wait for reply for 5 minutes and then send a message? Using discord js 【发布时间】:2021-05-22 04:39:41 【问题描述】:

我正在使用 Discord js 制作一个 Discord 机器人。 bot 的作用是在个人消息中向用户发送消息,然后等待用户响应 5 分钟。如果用户没有向成员发送任何内容,那么机器人会发送一条消息,表明请求已被拒绝,因为他们没有发送任何电子邮件 ID。我正在使用 discord.js 收集器 npm 包来获取消息并将其发送给用户。我遇到的问题是,如果用户没有输入任何内容,机器人会在 30 秒后向用户发送回复。我不想要那个。我希望机器人在发送请求被拒绝消息之前等待 5 分钟。这是我的代码的样子。

 message.reply("Please check your DM to verify your email id");
                const filter = (m) => m.author.id === message.author.id;
                
                    const botMessage = await message.author.send("Enter your registered email Id please?");
                    const userMessage = await MessageCollector.asyncQuestion(
                      botMessage,
                      user: message.author.id,
                      time:300000 // milliseconds
                    ).catch(()=>
                      message.author.send("Request Denied because you did not responded with a registerd email ID. You can request again!");
                      return 0;
                    ); 
                    

我还使用了不和谐的 js 库来实现自己的参数,例如空闲,但我仍然收到错误。这是我的代码在那里的样子。

message.reply("Please check your DM to verify your email id");
                    const filter = (m) => m.author.id === message.author.id;
                    
                        const botMessage = await message.author.send("Enter your registered email Id please?");
                        const userMessage = await MessageCollector.asyncQuestion(
                          botMessage,
                          user: message.author.id,
                          idle:300000 // milliseconds
                        ).catch(()=>
                          message.author.send("Request Denied because you did not responded with a registerd email ID. You can request again!");
                          return 0;
                        ); 
                  

如果有人能告诉我我在哪里犯了错误,那就太好了。

【问题讨论】:

【参考方案1】:

您正在使用的asyncQuestion 函数没有时间或空闲属性。 相反,它具有类型为MessageCollectorOptions 的collectorOptions。

所以你应该做的是使用 asyncQuestion 定义的 collectorOptions 并使用你的时间选项传入一个对象,然后你的计时器应该按预期工作。

const userMessage = await MessageCollector.asyncQuestion(
                    botMessage,
                    user: message.author.id,
                    collectorOptions:  time: 300000 
                ).catch(() => 
                    // catch code here...
                );

【讨论】:

以上是关于如何让 discord bot 等待回复 5 分钟然后发送消息?使用不和谐的 js的主要内容,如果未能解决你的问题,请参考以下文章

Discord bot没有回复消息[重复]

如何让 Discord bot 使用用户选择的号码名称发送图像? (Python 3.5.x)

Discord bot 添加并等待问答游戏的反应

Discord Bot 回复自己,无法识别 message.author.bot

Discord.JS 如何等待会员反应

Python,Discord bot 未回复消息且终端未更新