如何用 2 个问题为 await 消息收集器打点

Posted

技术标签:

【中文标题】如何用 2 个问题为 await 消息收集器打点【英文标题】:How to dot a await message collector with 2 question 【发布时间】:2021-04-08 07:33:49 【问题描述】:

我想在禁止用户后提出 2 个问题

    !bann @user 原因 多少时间。

我想我可以通过等待消息来做到这一点。在这段代码中,我只能做 2 个收集器,请问如何添加另一个?

message.channel.send('Why you want to bann this user ?')
.then(async() => 
    message.channel.awaitMessages(response => message.content, 
    max: 1,
    time: 30000,
    errors: ['time'],
  )
  .then(async(collected) => 
      message.channel.send(`The collected message was: $collected.first().content`);
    )
    .catch(() => 
      message.channel.send('There was no collected message that passed the filter within the time limit!');
    );
);

【问题讨论】:

【参考方案1】:

最简单的方法是让你的消息处理程序成为一个异步函数,然后使用 async/await:

await message.channel.send("Why do you want to ban this user?");
const reason = (await message.channel.awaitMessages(res => message.content, 
    max: 1,
    time: 30000,
    errors: ["time"]
)).first().content;
await message.channel.send("For how long do you want to ban them?");
const time = (await message.channel.awaitMessages(res => message.content, 
    max: 1,
    time: 30000,
    errors: ["time"]
)).first().content;

然后,您可以访问 reasontime 变量中的响应。

【讨论】:

各位大佬,我想知道如何删除等待消息的时间和原因?提前谢谢你。 @RjjfjfkFkkfkf 去掉.content,这样reasontime 包含消息,那么你可以只使用await reason.delete()await time.delete(),但是你需要访问它们reason.contenttime.content 的内容

以上是关于如何用 2 个问题为 await 消息收集器打点的主要内容,如果未能解决你的问题,请参考以下文章

如何用 Promise.all 替换多个 async/await 调用?

如何用STAR法则来回答「宝洁八大问」

如何用内网渗透突破安全策略

delphi 如何用消息发送一个记录

QQ的一些图标是隐藏了按钮的边框 但是鼠标放在上面又出现了 想问一下如何用WPF实现的

面试问题(五)