You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

discord.js从v12升级v13后startTyping方法不存在报错咨询

问题排查与修复方案

核心错误原因

你怀疑的module.exports写法没有问题,报错的根本原因是discord.js v13版本重构了原v12版本的频道输入状态相关API,直接移除了startTyping()和stopTyping()方法。

修复步骤

1. 替换废弃的输入状态API

找到app/events/messageCreate.js文件第172行左右的代码:

message.channel.startTyping();
cmdFile.exec(bot, msg, args).then(message.channel.stopTyping());

替换为v13版本的新API即可:

// sendTyping()会自动维持10秒的输入状态,满足绝大多数命令执行场景
message.channel.sendTyping();
await cmdFile.exec(bot, msg, args);

如果你的部分命令执行时长超过10秒,可以自行设置定时器重复调用sendTyping()延长输入状态显示时长。

2. 补全缺失的Gateway Intent

你目前的机器人配置少了接收消息内容必须的Intent,会导致后续即使修复了API问题也无法识别指令,需要修改bot.js里的Client初始化配置:

const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.MESSAGE_CONTENT] });

修改完成后需要前往Discord开发者后台的机器人管理页面,在「Privileged Gateway Intents」板块开启Message Content Intent权限,否则该Intent无法生效。

其他潜在问题优化

你代码里还存在一个容易触发i18n读取错误的问题:全局定义的language变量和多处局部定义的let language存在作用域冲突,部分场景下会取到空值导致返回消息异常,建议统一使用message.guild?.language ?? "en"来读取语言配置,替换掉所有对全局language变量的引用。

内容的提问来源于stack exchange,提问作者MarcZX10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:06:06