
本文详解如何利用 client.on('ready') 事件,在 Discord 机器人成功连接并就绪后,立即向指定频道发送格式美观的 Embed 消息。
本文详解如何利用 `client.on('ready')` 事件,在 discord 机器人成功连接并就绪后,立即向指定频道发送格式美观的 embed 消息。
要在 Discord 机器人启动并完成初始化(即进入“online”状态)时,自动向特定频道推送一条结构清晰、视觉友好的嵌入消息(Embed),关键在于正确监听 ready 事件,并确保频道获取与消息发送逻辑准确无误。
以下是推荐的实现方式(兼容 Discord.js v13–v14):
client.on('ready', () => {
console.log(`✅ ${client.user.tag} 已上线!`);
const targetChannel = client.channels.cache.get('YOUR_CHANNEL_ID');
if (!targetChannel) {
console.error('❌ 错误:未找到指定频道,请检查频道 ID 是否正确,或确认机器人已加入该服务器且拥有查看权限。');
return;
}
const embed = new Discord.EmbedBuilder()
.setTitle("Comandi Principali:")
.setDescription(
"- `/help` — 查看全部指令\n" +
"- `/ping` — 测试机器人响应延迟\n" +
"- `/info` — 获取服务器与机器人信息"
)
.setColor("#0099ff")
.setTimestamp()
.setFooter({ text: "Bot è ora online" });
targetChannel.send({ embeds: [embed] })
.catch(err => console.error('❌ 发送 Embed 失败:', err));
});
⚠️ 注意事项:
- 替换
'YOUR_CHANNEL_ID'为实际的文本频道 ID(右键频道 → “复制 ID”,需提前开启开发者模式); - 确保机器人对该频道具有
Send Messages和Embed Links权限; - 若使用 Discord.js v14+,请使用
EmbedBuilder(如上);v13 及更早版本请用MessageEmbed(已弃用,不推荐); -
ready事件仅触发一次,代表客户端完全就绪,适合执行一次性初始化通知; - 建议添加错误处理(如示例中的
.catch()),避免因权限/ID 错误导致静默失败。
通过该方案,你不仅能实现上线即通知,还能为后续运维(如部署提醒、健康状态广播)打下可扩展基础。










