首次开发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
相关产品推荐
相关产品推荐

