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