Discord.js自动删除含特定词汇消息的Bot无响应问题求助
Discord.js自动删除含特定词汇消息的Bot无响应问题求助
你好呀!刚入门编程就动手写Bot超棒的~你的代码思路是对的,但有几个关键小问题导致它没生效,我帮你梳理下:
问题1:事件名称错误
Discord.js里没有Events.AutoDelete这个内置事件,你要监听用户发送消息的动作,应该用Events.MessageCreate事件——这个事件会在任何用户发送消息时触发。
问题2:回调参数名称错误
你的执行函数里写的是async execute(_delete),但这个参数其实应该是触发事件时传入的消息对象,你得把它命名为message(或者其他和后续代码变量对应的名字)。原来的代码里message变量根本没定义,所以后面的判断逻辑根本跑不起来!
问题3:权限缺失(潜在问题)
别忘了给你的Bot账号分配**「管理消息」**的权限,否则就算代码对了,Bot也没有权限删除消息哦。
修正后的代码
const { Events } = require('discord.js'); module.exports = { // 改用正确的消息创建事件 name: Events.MessageCreate, // 参数改为message,和后续代码变量对应 async execute(message) { // 替换成你要监控的用户ID和特定词汇 if (message.author.id === '你的目标用户ID' && message.content.includes('要检测的词汇')) { // 加try-catch捕获删除失败的情况,方便排查问题 try { await message.delete(); console.log(`已删除用户${message.author.tag}的违规消息`); } catch (error) { console.error('删除消息失败:', error); } } }, };
额外小提示
- 记得把代码里的
你的目标用户ID和要检测的词汇替换成实际内容 - 可以保留代码里的日志输出,方便你调试时查看事件有没有触发、判断逻辑有没有命中
- 如果是要监控所有用户的消息,去掉
message.author.id === '你的目标用户ID'这个条件就好啦
备注:内容来源于stack exchange,提问作者Levical
相关产品推荐
相关产品推荐

