You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在discord.js v13的MessageCollector达到设定时间限制后触发代码?

解决方法

discord.js v13 的 MessageCollector 会在收集结束时触发 end 事件,你可以通过监听该事件判断是否超时:

  • 事件回调第一个参数为本次收集到的所有符合规则的消息集合
  • 第二个参数为收集结束的原因,超时场景下该值固定为 time

你原有代码首先需要补全收集器实例的变量赋值,修正后的完整示例如下:

// 将创建的收集器实例赋值给collector变量,否则后续监听会报错
const collector = interaction.channel.createMessageCollector({ filter, time: 60000, max: 1 });

collector.on('collect',async msg => {
  // 原有eval命令逻辑
});

// 监听收集结束事件
collector.on('end', (collected, reason) => {
  if (reason === 'time') {
    // 此处填写超时后的处理逻辑,比如发送超时提示
    interaction.followUp({ content: '等待输入超时,eval命令已取消', ephemeral: true });
  }
});

补充说明:除超时外,其他常见的结束原因还有:

  • max:达到设置的最大收集数量,你设置了max:1,收集到1条符合规则的消息后就会触发该原因的结束事件
  • user:手动调用collector.stop()主动终止收集时触发

内容的提问来源于stack exchange,提问作者Spacehold

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:48:02