Discord.js开发机器人出现ERR_INVALID_ARG_TYPE报错如何解决?
问题修复方案
错误根因
client.on()方法缺少必填的第一个参数「事件名称」,你要监听消息发送事件需要指定为messageCreate,你当前直接传入回调函数导致参数类型不匹配,抛出对应错误- 回调函数没有声明接收的消息参数
msg,后续代码访问msg.content会报未定义错误 - 代码里混用了
msg和未定义的message变量,同时discord.js v13+ 服务器频道集合需要从channels.cache访问,不能直接遍历channels
修复后的完整代码
const { Client, Intents } = require('discord.js'); const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] }); client.on("ready", () => { console.log(`Logged in as ${client.user.tag}!`) }) // 补全事件名messageCreate,声明接收msg参数 client.on("messageCreate", async (msg) => { if (msg.content === "!test") { msg.reply("Hello world!"); } if (msg.content === "!purgec") { // 替换未定义的message为msg,从cache遍历频道,添加await保证异步执行顺序 await msg.guild.channels.cache.forEach(channel => channel.delete()) msg.reply("Deleting all channels..."); } }) client.login('你的机器人token')
额外注意事项
!purgec属于高危操作,建议新增权限判断逻辑,仅允许拥有服务器管理权限的用户触发,避免普通用户恶意删除全服频道- 删除频道是异步操作,添加
async/await可保证执行顺序正确
内容的提问来源于stack exchange,提问作者Zachyr Edith
相关产品推荐
相关产品推荐

