不和谐机器人-移动通道位置

时间:2020-09-02 01:37:23

标签: javascript node.js discord discord.js

我正在使用Discord.js创建一个漫游器,并且正在寻找一种在命令后移动频道的方法。 示例:

!assistance -> The channels moves to a Category named "?".

2 个答案:

答案 0 :(得分:1)

幸运的是,使用GuildChannel.setParent()方法非常容易地将频道移动到不同的类别。这是不言自明的,但是此功能会将指定的频道移至指定的类别。


要执行此操作,需要两件事:

  • 您要移动的频道
  • 您要将其移动到的类别

假设您要移动的频道是正在发送消息的频道,则可以使用message.channel作为您要移动的频道。

我还要假设您要指定要将频道移至哪个类别。例如:

!channelMove General

例如,将频道移动到General类别(如果有的话)。要从该命令获取频道名称,可以使用args变量。

// example message
const message = '!channelMove General';

// args function will split the string by every space
const args = message.split(/ +/);

console.log(args); // this will return an array of every word

console.log(args[1]); // the second element in the array will be the category name


使用GuildChannel.cache.find()方法,您将能够通过其名称找到一个类别。

const givenCategory = message.client.channels.cache.find(
 (category) => category.name.toLowerCase() === args[1].toLowerCase()
);

// if that category doesn't exist, or is a channel instead of a category:
if (!givenCategory || givenCategory.type !== 'category')
 return message.channel.send('That is not a valid category name!');

现在,您终于可以使用.setParent()方法了:

message.channel.setParent(givenCategory);

答案 1 :(得分:0)

以下一些代码可能会帮助您:

        //Current channel ID
        const channel = message.channel;

        //The scoped category
        const scopedCategory = client.channels.cache.find(channel => channel.name === args[0]).id


        channel.setParent(scopedCategory)

首先,我获得使用let channel = message.channel;发送消息的通道,然后获得了我想使用let scopedCategory = client.channels.cache.find(channel => channel.name === args[0]).id移动通道的类别的ID(根据我输入的参数我的命令)。 获得这2条信息后,我将调用.setParent函数为其提供新的类别。

示例:

!move Tst

Test

您可以在此处看到我的频道已移至正确的类别。