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

Discord.js v13.6.0:如何实现重复获取合规输入及角色标签查询?

Discord.js 13.6.0 顺序消息收集器实现(价格+角色标签)

你需要通过分步状态控制实现顺序收集,用变量跟踪当前要获取的内容,每个步骤单独做有效性校验,输入不合规时仅发送提示、不终止收集器,直到拿到有效内容再进入下一环节。以下是修复后的完整代码:

// 初始化收集状态:0=收集价格,1=收集角色标签
let currentStep = 0;
let collectedPrice = null;
let collectedRole = null;

// 过滤器:仅接收发起操作的用户消息(替换为你原有的过滤逻辑)
const filter = (msg) => msg.author.id === mainMessage.author.id;

const collector = await mainMessage.channel.createMessageCollector({ 
  filter: filter, 
  time: 900000 
});

collector.on("collect", async (message) => {
  // 第一步:收集价格
  if (currentStep === 0) {
    const priceItem = message.content;
    // 校验是否为有效数字
    if (isNaN(parseFloat(priceItem))) {
      return message.channel.send(`To nie liczba`);
    }
    // 价格有效,保存并切换到角色收集步骤
    collectedPrice = parseFloat(priceItem);
    currentStep = 1;
    message.channel.send(`请输入角色标签(可@角色或直接输入角色名称):`);
  } 
  // 第二步:收集角色标签
  else if (currentStep === 1) {
    let targetRole;
    // 优先识别@提到的角色
    if (message.mentions.roles.size > 0) {
      targetRole = message.mentions.roles.first();
    } 
    // 无@时按名称查找服务器内角色
    else {
      targetRole = message.guild.roles.cache.find(role => 
        role.name.toLowerCase() === message.content.toLowerCase()
      );
    }
    // 校验角色是否存在
    if (!targetRole) {
      return message.channel.send(`未找到该角色,请重新输入`);
    }
    // 角色有效,保存并终止收集器
    collectedRole = targetRole;
    collector.stop();
  }
});

collector.on("end", (collected, reason) => {
  // 正常完成全部收集的情况
  if (reason === "user" && collectedPrice && collectedRole) {
    mainMessage.edit({
      content: `Nazwa: ${itemName}\nPieniadze: ${collectedPrice}\nRola: ${collectedRole.name}`,
    });
    mainMessage.channel.send(`信息收集完成!`);
  } 
  // 超时或未完成收集的情况
  else {
    mainMessage.channel.send(`信息收集超时或未完成,请重新发起`);
  }
});

核心逻辑说明

  • 顺序控制:用currentStep变量标记当前收集阶段,确保流程严格按「价格→角色」顺序执行
  • 校验容错:每个阶段单独做有效性检查,输入不合规时仅发送提示,不终止收集器,直到用户输入有效内容
  • 角色匹配:支持两种输入方式(@角色/角色名称),覆盖用户常用操作场景
  • 结束反馈:区分正常完成和超时/中断情况,给出对应提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:55:21