如何修改Discord.js代码将违规@提醒发送到其他指定频道
调整方案
你只需要先获取要推送提醒的目标频道ID,替换原有回复逻辑即可,修改后的代码如下:
client.on('messageCreate', async message => { // 过滤机器人消息和私信场景 if(message.author.bot || message.channel.type === `DM`) return; // 受保护的禁止提及用户ID const protectedUserId = `332599069027598336`; // 提醒推送目标频道ID,请替换为你自己的实际频道ID const alertChannelId = `替换为你的提醒频道ID`; if(message.mentions.members.get(protectedUserId)){ // 拉取目标频道实例 const alertChannel = await client.channels.fetch(alertChannelId).catch(err => console.log('获取提醒频道失败', err)); // 校验频道存在且可发送消息后推送提醒 if(alertChannel && alertChannel.isTextBased()){ alertChannel.send(`用户 ${message.author} 提及了受保护用户 ${message.mentions.members.get(protectedUserId).user.tag}\n违规消息跳转链接:${message.url}`); } } });
关键修改点说明
- 提前声明了两个可配置常量,后续修改受保护用户、提醒频道时不用深入逻辑代码调整
- 删除了原代码中在触发频道回复的
message.reply()逻辑,改为从客户端实例拉取指定频道调用send()方法推送消息 - 新增了异常捕获和频道类型校验,避免频道不存在、机器人无权限访问频道时触发运行报错
- 额外追加了违规消息跳转链接,方便管理员直接定位到对应上下文
注意:使用前请确认机器人已经被授予目标提醒频道的「发送消息」权限,否则会出现推送失败的问题。
内容的提问来源于stack exchange,提问作者rs0021
相关产品推荐
相关产品推荐

