如何以最简方式实现Discord Bot发送消息?代码调试无效求助
最简方式实现Discord Bot发送消息
你之前代码的问题
第一段代码的问题
- Discord.js v14+已废弃
message事件,改用messageCreate - 缺少
GatewayIntentBits.MessageContent意图,无法读取消息内容,导致回复逻辑无法触发 GuildMessageTyping意图和消息回复无关,属于冗余配置
第二段代码的问题
仅完成了Bot客户端初始化,缺少登录逻辑、事件监听(如ready、messageCreate),完全无法运行
最简实现步骤
1. 安装依赖
在项目目录执行:
npm install discord.js dotenv
2. 配置Bot权限
- 登录Discord开发者平台,进入你的Bot应用,在「Privileged Gateway Intents」下开启Message Content Intent
- 邀请Bot到服务器时,确保勾选
Send Messages权限
3. 最简代码示例
创建.env文件,填入你的Bot令牌:
TOKEN=你的Bot令牌
创建index.js文件,写入以下代码:
require("dotenv").config(); const { Client, GatewayIntentBits } = require('discord.js'); // 初始化客户端,只保留必要的意图 const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent ] }); // Bot上线提示 client.once("ready", () => { console.log("Bot已上线!"); }); // 监听消息创建事件,实现回复逻辑 client.on("messageCreate", (message) => { // 避免Bot回复自己的消息 if (message.author.bot) return; // 检测消息内容,发送回复 if (message.content.toLowerCase() === 'hello') { message.channel.send(`Hello: ${message.author.username}`); } }); // 登录Bot client.login(process.env.TOKEN);
4. 运行Bot
执行命令启动:
node index.js
关键说明
- 仅保留必要意图:
Guilds是服务器功能基础,GuildMessages允许监听服务器消息,MessageContent允许读取消息文本内容,这三个是实现消息回复的核心 - 使用
messageCreate事件替代旧的message事件,这是Discord.js v14+的标准用法 - 增加
if (message.author.bot) return避免Bot无限自回复
内容的提问来源于stack exchange,提问作者monkie-dev
相关产品推荐
相关产品推荐

