用户打开频道时如何添加权限?

问题描述 投票:0回答:0

所以我一直在尝试让用户在不提供主频道权限的情况下,让他无法控制或删除它,我正在寻找的是,当他进入房间然后移动到频道房间时,我正在寻找允许他控制他频道内的权限,好吧,他可以控制编辑频道,但权限我无法进入。

我试图将 MangePermissons 放在两个允许成员 ID 中,然后当他进入房间时我为用户设置 true,但是,MangePermissons 到目前为止无法工作,我不知道如何,当我让他可以使用 VoiceUserActivity,Speak 确实有效,这是我的代码...

const client = require("../../index");
const { ChannelType, Collection } = require("discord.js");
let voiceManager = new Collection();

module.exports = {
    name: "jointocreate"
};

client.on("voiceStateUpdate", async (oldState, newState) => {
    const { member, guild } = oldState;
    const newChannel = newState.channel;
    const oldChannel = oldState.channel;

    const channel = client.channels.cache.get("Channel_ID");

    if (oldChannel !== newChannel && newChannel && newChannel.id === channel.id) {
        const voiceChannel = await guild.channels.create({
            name: `${member.user.tag}`,
            type: ChannelType.GuildVoice,
            parent: newChannel.parent,
            permissionOverwrites: [
                {
                    id: member.id,
                    allow: ["Connect", "ManageChannels", "Speak"],
                },
                {
                    id: guild.id,
                    allow: ["Connect"],
                },
            ],
            userLimit: "3"
        }
        );

        voiceManager.set(member.id, voiceChannel.id);

        await newChannel.permissionOverwrites.edit(member, {
            Connect: false
        });
        setTimeout(() => {
            newChannel.permissionOverwrites.delete(member);
        }, 30000);

        return setTimeout(() => {
            member.voice.setChannel(voiceChannel);
        }, 500);
    }

    const jointocreate = voiceManager.get(member.id);
    const members = oldChannel?.members
        .filter((m) => !m.user.bot)
        .map((m) => m.id);
    if (
        jointocreate &&
        oldChannel.id === jointocreate &&
        (!newChannel || newChannel.id !== jointocreate)
    ) {
        if (members.length > 0) {

            let randomID = members[Math.floor(Math.random() * members.length)];
            let randomMember = guild.members.cache.get(randomID);
            randomMember.voice.setChannel(oldChannel).then((v) => {
                oldChannel.setName(randomMember.user.username).catch((e) => null);
                oldChannel.permissionOverwrites.edit(randomMember, {
                    Connect: true,
                    Speak: true,
                   // I am looking here to set MangePermissons..
                   // tried MangePermissions: true, not working for me..
                    ManageChannels: true
                });
            });
            voiceManager.set(member.id, null);
            voiceManager.set(randomMember.id, oldChannel.id);
        } else {
            voiceManager.set(member.id, null);
            oldChannel.delete().catch((e) => null);
        }
    }
});
javascript discord discord.js voice
© www.soinside.com 2019 - 2024. All rights reserved.