如何实现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
相关产品推荐
相关产品推荐

