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

discord.js调用message.startThread()报错不是函数的正确实现方法

问题解决指南

核心报错原因

你遇到的message.startThread is not a function错误,本质是调用方法的前提条件不满足,按以下步骤排查即可解决:


1. 检查discord.js版本

startThread是discord.js v13及以上版本才新增的API,v12及更低版本没有该方法:

  • 查看当前安装版本的命令:npm list discord.js
  • 升级到支持该功能的最新稳定版命令:npm install discord.js@latest

2. 确认message对象有效性

仅文本/公告频道内的普通非系统消息实例才挂载startThread方法,以下场景拿到的message对象不支持该方法:

  • 交互触发后返回的临时消息对象
  • 系统通知类消息实例
  • 私聊频道内的消息实例

正确的消息监听示例:

client.on('messageCreate', async message => {
  // 过滤机器人自身发送的消息
  if (message.author.bot) return
  // 此处拿到的message为符合要求的有效实例
})

3. 完整可运行代码

添加try/catch捕获异步错误,即可同时解决你遇到的未处理Promise rejection报错:

client.on('messageCreate', async message => {
  if (message.author.bot) return
  // 示例触发条件:消息内容为!创建线程
  if (message.content === '!创建线程') {
    try {
      const thread = await message.startThread({
        name: 'food-talk',
        autoArchiveDuration: 60,
        reason: 'Needed a separate thread for food',
      })
      console.log(`线程创建成功,名称:${thread.name}`)
    } catch (err) {
      console.error('线程创建失败:', err)
    }
  }
})

额外注意事项

  • 确保机器人在对应频道拥有创建公开线程权限
  • autoArchiveDuration的可选值受服务器Boost等级限制,无Boost的服务器最高仅支持设置1440分钟(24小时)自动归档

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:24:11