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

首次开发Discord.js机器人,测试命令无法运行求助

Discord.js机器人测试命令没反应?看这篇解决

你代码里的几个关键问题

  • 命令判断写错了:你写了if (commands === 'test'),但根本没定义过commands变量!之前你定义的是cmd,而且cmd是带前缀的(比如用户输入>test,cmd就是>test),所以应该用去掉前缀后的args[0]来判断是不是test。
  • 状态设置里的ActivityType没处理对:ActivityType.Playing这个东西你没导入,要么在开头的require里加上ActivityType,要么直接用字符串'Playing'就行。
  • 冗余代码没必要留:你写的messageArray和argument和已经定义的args功能重复,删了就行,代码更简洁。

改好后的代码

const { Client, GatewayIntentBits, ActivityType } = require('discord.js');

const prefix = '>';

// 明确声明需要的意图,比写32767更清晰
const client = new Client({
    intents: [
        GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildMessages,
        GatewayIntentBits.MessageContent
    ]
});

client.on("ready", () => {
    console.log("botong is online!")

    client.user.setPresence({
        status: 'online',
        activity: {
            name: 'status',
            type: ActivityType.Playing
        }
    });
});

client.on("messageCreate", (message) => {
    if (!message.content.startsWith(prefix) || message.author.bot) return;
    // 拆分出不带前缀的命令和参数
    const args = message.content.slice(prefix.length).split(/ +/);
    const cmd = args[0];

    // 测试命令
    if (cmd === 'test') {
        message.channel.send("Bot is working!")
    }
})

client.login("MY TOKEN");

适合你的讲解视频类型

  • Discord.js新手入门教程:从机器人创建、代码初始化讲起,帮你理解JS语法和Discord.js的核心逻辑,毕竟你之前只写过Python,得先适应JS的写法。
  • 前缀命令编写教程:一步步教你怎么写像>test这样的前缀命令,包括命令解析、参数处理的细节。
  • 常见问题排查视频:专门讲机器人没响应、命令失效这类新手常踩的坑,看完能快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:22:01