Discord机器人开发:如何在消息转发至其他频道后删除原消息
实现方案
你只需要调用Discord.js中消息对象自带的异步delete()方法即可实现删除原触发消息的需求,同时你现有代码还有几处小问题需要修正,完整可运行代码如下:
bot.on("message", async (message) => { if (message.content.startsWith("t!logout")) { // 修正原有slice的错误用法,截取命令之后的内容 const str = message.content.slice('t!logout'.length).trim(); // 先发送到目标频道,注意你填写的频道ID多了1位,替换成自己的18位正确频道ID await bot.channels.cache .get("替换为你的目标频道ID") .send( `New Message from: ${message.author.username}#${message.author.discriminator} ` + str ); // 删除原触发消息,添加异常捕获避免无权限时报错崩溃 await message.delete().catch(err => console.log("删除消息失败,请检查机器人权限:", err)); } });
注意事项
- 必须给机器人开启对应服务器的「删除消息」权限,否则删除操作会执行失败
- 如果你使用的是Discord.js v14及以上版本,需要把事件名
message替换为messageCreate,否则逻辑不会触发
内容的提问来源于stack exchange,提问作者I need Help
相关产品推荐
相关产品推荐

