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

ES模块加载问题解决及Discord.js斜杠命令排查求助

问题解决指南

一、ES模块加载警告修复

  • 方案1:修改package.json
    在项目根目录的package.json中添加"type": "module"字段,示例:
    {
      "name": "your-discord-bot",
      "version": "1.0.0",
      "type": "module",
      "dependencies": {
        "discord.js": "^14.14.1"
      }
    }
    
    保存后重启项目即可消除警告。
  • 方案2:修改文件后缀
    将所有使用ES模块语法(import/export)的.js文件重命名为.mjs,Node.js会自动按ES模块规则加载。

二、Discord.js依赖包安装

确保安装适配ES模块的Discord.js版本(v13及以上默认支持),执行命令:

npm install discord.js

若需指定最新稳定版:

npm install discord.js@latest

注:Discord.js v14已内置@discordjs/builders(用于Slash Command构建),v13版本需单独安装:

npm install @discordjs/builders

三、Slash Command(calin命令)配置检查

1. 命令定义规范

确保calin命令正确定义用户提及选项,示例代码:

import { SlashCommandBuilder } from 'discord.js';

export const data = new SlashCommandBuilder()
  .setName('calin')
  .setDescription('提及用户并发送互动消息')
  .addUserOption(option =>
    option.setName('target')
      .setDescription('要提及的用户')
      .setRequired(true)); // 必填选项需设为true

2. 交互处理逻辑检查

处理命令时需正确获取用户选项并完成提及,示例代码:

import { Events } from 'discord.js';

client.on(Events.InteractionCreate, async interaction => {
  if (!interaction.isChatInputCommand()) return;

  if (interaction.commandName === 'calin') {
    const targetUser = interaction.options.getUser('target');
    if (!targetUser) {
      await interaction.reply({ content: '未找到指定用户!', ephemeral: true });
      return;
    }
    // 正确提及用户的写法
    await interaction.reply(`你想给 ${targetUser} 一个抱抱!🥰`);
  }
});

常见错误排查

  • 确保命令已正确注册到服务器,可通过以下脚本重新部署更新:
    import { REST, Routes } from 'discord.js';
    import { config } from 'dotenv';
    
    config();
    const commands = [/* 你的命令数组 */];
    
    const rest = new REST({ version: '10' }).setToken(process.env.DISCORD_TOKEN);
    
    (async () => {
      try {
        console.log('正在刷新应用程序命令...');
        await rest.put(
          Routes.applicationGuildCommands(process.env.CLIENT_ID, process.env.GUILD_ID),
          { body: commands },
        );
        console.log('命令刷新成功!');
      } catch (error) {
        console.error(error);
      }
    })();
    
  • 若已设置"type": "module",需确保所有代码统一使用ES模块语法(用import替代require,export替代module.exports)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:50:16