【问题标题】:Sort guild channels correctly discord.js v13正确排序公会频道 discord.js v13
【发布时间】:2022-01-26 03:50:54
【问题描述】:

我正在制定一个命令,当管理员执行该命令时,机器人将按照我们在不和谐中看到的正确顺序列出特定类别中的所有频道。每当我要求<Category>.children.map(c => c.name) 时,我总是会在数组顶部获得带有语音通道的无序元素,并且对于舞台通道也是如此。我需要的是一个函数(这里是sortChannels),它的数组(或类别中的通道集合)的顺序与我们在 Discord 上看到的完全一样。这是我的类别:

我有:

function sortChannels(channels){
    // What I need to figure out
}
let category = await guild.channels.fetch("935933604261592665")
let list = category.children
             .sort(sortChannels)
             .map(c => c.name)
             .join('\n')

message.channel.send(list)

我尝试使用position 但它为每个频道提供了以下结果:

这没有多大帮助,我正在寻找的是 1、2、3、4、5 等。

【问题讨论】:

    标签: node.js sorting discord discord.js


    【解决方案1】:

    您正在寻找频道的位置。 GuildChannels 有一个 positionrawPosition 属性。虽然我不知道哪个代表出现的位置,但都尝试一下。

    function sortChannels((a, b)){
        return a.position - b.position;
        // Or 
        return a.rawPosition - b.rawPosition;
    }
    

    GuildChannel#position

    【讨论】:

    • 我用了位置,好像每个通道类型都有自己的位置变化,例如语音通道有位置1和2、3、4,文本通道有1,舞台通道有1。我想要文字通道1,语音通道2、3、4、5和舞台通道6:/
    • 看来.position 是一个使用排序通道的getter(我不知道究竟是怎样的),而.rawPosition 直接来自Discord API
    猜你喜欢
    • 2022-01-25
    • 2021-10-12
    • 2021-12-06
    • 1970-01-01
    • 2021-12-02
    • 2022-01-16
    • 1970-01-01
    • 2021-10-29
    • 2020-12-12
    相关资源
    最近更新 更多