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

如何实现Discord Bot响应!setup命令创建指定文本频道并解决报错?

Discord Bot 创建频道报错解决方法

错误原因

你遇到的DiscordAPIError[50035]是因为使用了Discord.js v14版本的旧写法。v14开始,channels.create()方法要求传入配置对象,而不是分开的名称和类型参数,旧写法会导致API无法识别必填的name字段。

修复代码

将messageCreate事件中的频道创建代码替换为以下内容:

client.on('messageCreate', (message) => {
  if (message.content === '!setup') {
    const server = message.guild;
    // 创建名为"General 2"的文本频道
    server.channels.create({
      name: "General 2",
      type: ChannelType.GuildText
    })
    .then(channel => console.log(`创建频道: ${channel.name}`))
    .catch(err => console.error(err));
  }
})

关键修改点

  • 用配置对象传递参数:{ name: "General 2", type: ChannelType.GuildText },明确指定频道名称和类型
  • 添加.then()和.catch()可以捕获创建成功/失败的状态,方便调试
  • 你原本代码中用了message.author.username作为频道名,现在改成你需要的固定名称"General 2"

完整代码参考

require('dotenv').config()
const { Client, IntentsBitField, ChannelType } = require('discord.js')

const client = new Client({
  intents: [
    IntentsBitField.Flags.Guilds,
    IntentsBitField.Flags.GuildMembers,
    IntentsBitField.Flags.GuildMessages,
    IntentsBitField.Flags.MessageContent,
  ]
})

client.on('ready', (c) => {
  console.log('Server Setup is ready')
})

client.on('messageCreate', (message) => {
  if (message.content === '!setup') {
    const server = message.guild;
    server.channels.create({
      name: "General 2",
      type: ChannelType.GuildText
    })
    .then(channel => console.log(`成功创建频道: ${channel.name}`))
    .catch(err => console.error('创建频道失败:', err));
  }
})

client.login(process.env.Token)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 17:21:11