Discord.js开发报错TypeError: message.reply is not a function问题咨询
错误原因
你遇到的TypeError: message.reply is not a function报错,核心问题是命令执行函数的传参顺序不匹配:
- 在
index.js中调用命令的execute方法时,你传入的参数顺序是Prefix, client, message, args - 但在
rps.js中定义execute方法时,你设置的接收参数顺序是Prefix, message, args
这就导致rps.js里拿到的message变量实际是client对象,自然不存在reply方法。
修复方法
两种方案任选其一即可:
方案1:修改命令文件的参数接收顺序
将所有命令文件(此处为rps.js)的execute参数顺序调整为和调用时一致:
// rps.js 中修改execute定义即可,其余代码不变 execute(Prefix, client, message, args) { // 原有逻辑代码 }
如果后续你的命令逻辑不需要用到client对象,也可以直接用占位变量接收忽略即可。
方案2:修改index.js的传参逻辑
如果你的所有命令都不需要用到client对象,直接调整index.js里的调用逻辑,删掉多余的client传参:
// index.js 中找到try块里的调用代码,修改为: client.commands.get(command).execute(Prefix, message, args);
其他优化提示
- 你当前代码里的
No_Choice_Reply、Game_Tie_Reply没有加const/let声明,属于隐式全局变量,容易引发变量污染问题,建议补充声明关键字。 - 你目前使用的是discord.js v12及更早版本的
message事件,若后续升级到v13以上版本,该事件已被废弃,需要替换为messageCreate事件,同时初始化Client时需要补充对应网关意图配置。
内容的提问来源于stack exchange,提问作者StanLachie
相关产品推荐
相关产品推荐

