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

修复验证面板重复创建数据与删除数据无效的Bug

问题修复方案

问题1:setup命令重复生成数据的修复

原代码存在两个核心问题:

  • verify.findOne是异步操作,未添加await,导致data是Promise对象而非实际查询结果,判断逻辑完全失效
  • 重复检查的if (data == data)是无意义表达式,永远为true,无法拦截已存在的验证面板记录

修复后的setup代码:

// setup
const data = await verify.findOne({ guildId: interaction.guild.id });
if (data) {
  return interaction.reply({
    content: '你已经创建过验证面板了!',
    ephemeral: true,
  });
}
await verify.create({
  guildId: interaction.guild.id,
  roleId: role.id,
});
return interaction.reply({
  content: '验证面板设置成功!',
  ephemeral: true,
});

问题2:delete命令无法删除数据的修复

原代码的问题是verify.findOneAndDelete是异步操作,未加await,导致data始终是Promise对象,!data的判断永远不成立,同时无法确保删除操作完成后再执行回复逻辑。

修复后的delete代码:

// delete
const data = await verify.findOneAndDelete({ guildId: interaction.guild.id });
if (!data) {
  return interaction.reply({
    content: '此服务器尚未设置验证面板',
    ephemeral: true,
  });
}

interaction.reply({
  content: `已成功删除**${interaction.guild.name}**的验证数据`,
  ephemeral: true,
});

关键说明

所有MongoDB操作(findOne/create/findOneAndDelete)均为异步函数,必须添加await才能获取实际的查询/操作结果,否则无法正确执行逻辑判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:35:52