使用 discord.js 创建频道

Posted

技术标签:

【中文标题】使用 discord.js 创建频道【英文标题】:Create a channel with discord.js 【发布时间】:2020-09-28 09:57:18 【问题描述】:

我正在尝试做一个不和谐的机器人来创建频道等,但我无法实现它,因为我的代码应该创建一个频道但是...我尝试了很多东西,这两个没有'没有给我错误:(我用 DONOTLOOK 替换了机器人的令牌,我不会有问题......)

选项 1:

const Discord = require('discord.js');
const bot = new Discord.Client();

bot.login('DONOTLOOK');

bot.on('ready', () => 
  console.log('Logged in as $bot.user.tag!');
);

bot.on('message', msg => 
  if (msg.content === 'ping') 
    msg.reply('Pong!');
    var server = msg.guild;
    bot.channels.add("anewchannel", type: 0);
  
);

选项 2:

const Discord = require('discord.js');
const bot = new Discord.Client();

bot.login('DONOTLOOK');

bot.on('ready', () => 
  console.log(`Logged in as $bot.user.tag!`);
);

bot.on('message', msg => 
  if (msg.content === 'ping') 
    msg.reply('Pong!');
    var server = msg.guild;
    const channel = bot.channels.add("newchannel", type: 0);
  
);

这并没有在控制台上给我任何 node.js 错误,机器人回答了我但没有创建频道。我还查看了两个参考(https://discord.com/developers/docs/resources/guild#create-guild-channel,https://discord.js.org/#/docs/main/stable/class/GuildChannelManager?scrollTo=create),没有人的解决方案有效,discord.com 的一个也给了我 node.js 错误。上面的两个选项取自 discord.js 文件,它们没有给出 node.js 错误,但没有创建通道。如果有人可以帮助我,请。

【问题讨论】:

【参考方案1】:

下面的代码解释了如何通过命令创建一个文本通道。

bot.on('message', msg =>  //Message event listener
    if (msg.content === 'channel')  //If the message contained the command
        message.guild.channels.create('Text',  //Create a channel
            type: 'text', //Make sure the channel is a text channel
            permissionOverwrites: [ //Set permission overwrites
                id: message.guild.id,
                allow: ['VIEW_CHANNEL'],
            ]
        );
        message.channel.send("Channel Created!); //Let the user know that the channel was created
    
);

【讨论】:

【参考方案2】:

discord.js v13 改变了一些东西。

更新版本:

bot.on("messageCreate", message =>  // instead of 'message', it's now 'messageCreate'
    if (message.content === "channel") 
        message.guild.channels.create("channel name",  
            type: "GUILD_TEXT", // syntax has changed a bit
            permissionOverwrites: [ // same as before
                id: message.guild.id,
                allow: ["VIEW_CHANNEL"],
            ]
        );
        message.channel.send("Channel Created!);
)

不相关,但我建议使用bot.guilds.cache.get(message.guildId) 而不是直接获取消息的公会。使用正则表达式也远远优于message.content === "channel"

【讨论】:

【参考方案3】:

如果你不想使用消息来创建你可以使用..

var bot = client.guilds.cache.get("<GUILD-ID>");
  server.channels.create("<CHANNEL-TEXT>", "<CHANNEL-TYPE>").then(channel => 
    var cat = server.channels.cache.find(c => c.name == "BUSINESSES" && c.type == "category");
    if (!cat)  console.log("category does not exist"); return; 
    channel.setParent(cat.id);
  )

【讨论】:

以上是关于使用 discord.js 创建频道的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js 权限覆盖创建频道不会更改权限?

Discord.js 删除频道

Discord.js 在文本频道中加入/离开语音频道通知

Discord.js 从反应中获取用户**更新**

使用 Discord.js 从频道获取频道类别

从服务器中删除所有频道(语音和文本) - discord.js