我正在使用Discord.js
创建一个漫游器,并且正在寻找一种在命令后移动频道的方法。
示例:
!assistance -> The channels moves to a Category named "?".
答案 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
您可以在此处看到我的频道已移至正确的类别。