Discord bot无法读取message.content 基于discord.js的扑克机器人问题求助
Discord Bot 无法读取消息内容问题修复方案
1 缺失必要的消息内容权限Intent
Discord v10及以上版本要求显式声明MessageContent权限才能读取消息文本内容,需要完成两处配置:
- 代码中初始化Client时的intent数组新增
MessageContent项,如果你使用的是discord.js v13版本,intent名请替换为全大写下划线格式:["GUILD_MESSAGES", "DIRECT_MESSAGES", "MESSAGE_CONTENT"] - 进入Discord开发者平台的对应Bot管理页,在「Privileged Gateway Intents」板块开启
Message Content Intent开关即可
2 toLowerCase调用错误
toLowerCase是JavaScript字符串方法,必须加括号执行才能得到小写结果,你当前写的message.content.toLowerCase是读取方法本身,不是执行后的返回值,永远不会匹配到目标关键词。
3 调试日志输出错误
你当前console.log打印的是完整message对象,无法直观看到消息内容,应该指定打印message.content属性。
4 关键词匹配逻辑可优化
你当前用全等于判断,仅当用户发送的内容完全是AK/AA/KK时才会触发,如果你需要匹配包含这些关键词的消息(比如你示例里的AA CO PF),可以改用includes()方法判断。
修复后完整代码
const Discord = require("discord.js"); // 新增MessageContent intent,v13版本请替换为全大写下划线格式的intent名 const client = new Discord.Client({ intents: ["GuildMessages", "DirectMessages", "MessageContent"] }); var name = "Poker Bot"; var usersHand let firstCardValue let secondCardValue let firstCardSuit let secondCardSuit client.on("ready", () => { console.log(`Bot is online: ${name} !`); client.user.setActivity('Burning The Fucking Casino Down'); }); client.on("messageCreate", message => { // 打印消息内容而非完整对象 console.log(`The user has said: ${message.content} `); // 先转小写再判断,toLowerCase加括号执行 const lowerContent = message.content.toLowerCase() // 完全匹配场景用以下判断 if (lowerContent == 'ak' || lowerContent == 'aa' || lowerContent == 'kk'){ message.reply("RECOMMENDED PLAY SHOVE: ALL IN") } // 如需匹配包含关键词的场景,请注释上方判断,改用下方代码 // if (lowerContent.includes('ak') || lowerContent.includes('aa') || lowerContent.includes('kk')) { // message.reply("RECOMMENDED PLAY SHOVE: ALL IN") // } }); // 请补全以下代码,填入你的Bot Token完成启动 // client.login('你的Bot Token')
内容的提问来源于stack exchange,提问作者npmackay
相关产品推荐
相关产品推荐

