新手开发Discord.js机器人:如何实现ping触发pong的Embed回复?
代码改造方案
改造后的完整基础代码
const Discord = require('discord.js'); const client = new Discord.Client(); client.on('message', message => { // 过滤机器人自身消息,避免死循环 if (message.author.bot) return; if (message.content.startsWith('ping!')) { // 构造Embed消息 const pongEmbed = new Discord.MessageEmbed() .setDescription('pong!') // 若需要将pong放在标题位置,替换为.setTitle('pong')即可 .setColor('#0099ff') .setTimestamp(); // 发送Embed回复 message.reply({ embeds: [pongEmbed] }); } }); client.on('ready', () => { console.log('I am ready!'); }); client.login('your bot token');
关键改动说明
- 新增机器人消息过滤:添加
if (message.author.bot) return;判断,避免机器人收到自身发送的消息后反复触发回复逻辑,造成死循环。 - 新增Embed构造逻辑:使用discord.js内置的
MessageEmbed类生成嵌入消息,可根据需求自由调整样式(颜色、标题、附加字段等),基础版本直接配置显示pong即可。 - 回复传参适配:采用
embeds数组的对象格式传参,适配discord.js v13及以上版本的API要求;如果使用v12及更早版本,可将回复语句改为message.reply(pongEmbed);直接传入Embed实例。 - 新版事件适配:如果使用discord.js v14及以上版本,需要将监听消息的事件从
client.on('message', ...)修改为client.on('messageCreate', ...),旧版message事件在v14中已被废弃,无法正常触发。
内容的提问来源于stack exchange,提问作者Soumyajit Is Live
相关产品推荐
相关产品推荐

