@Waynenn

Как убрать удаление канала после выхода создателя?

Здравствуйте! Я бы хотел узнать, как можно сделать так, чтобы когда создатель "приватной" комнаты выходил, канал не удалялся. Такая система есть в VoiceMaster бот, и в ботах на серверах Tenderly 89Squad. А то мой бот при выходе создателя комнаты, комната удаляется и всех выкидывает. Я бы хотел чтобы если пользователи ещё есть, то комната не удалялась.

var servers = {};

module.exports = function(oM, nM) {
  if (nM.voiceChannel) {
    //если комнаты для создания приваток не существует
    if (
      !nM.voiceChannel.guild.channels.find(
        channel => channel.name == "создать приват"
      )
    ) {
      nM.voiceChannel.guild
        .createChannel(
          "создать приват",
          {
            type: "VOICE",
            permissionOverwrites: [
              {
                id: nM.guild.id,
                deny: ["ADMINISTRATOR", "SPEAK"],
                allow: ["CONNECT"]
              }
            ]
          },
          { reason: "Создан канал для приватных комнат" }
        )
        .then(() => {
          nM.voiceChannel.guild.channels
            .find(channel => channel.name == "создать приват")
            .setUserLimit(1, "Канал для создания приватных комнат");
        });
    }
    //создаём приватку если пользователь зайдёт в канал
    if (nM.voiceChannel.name == "создать приват") {
      nM.voiceChannel.guild
        .createChannel("Приват", {
          type: "VOICE",
          parent: "665266615423598602",
          permissionOverwrites: [
            {
              id: nM.guild.id,
              deny: ["ADMINISTRATOR"],
              allow: ["CONNECT", "SPEAK", "VIEW_CHANNEL"]
            }
          ]
        })
        .then(room => {
          nM.setVoiceChannel(room.id);
          nM.voiceChannel.guild.channels
            .find(channel => channel.id == room.id)
            .overwritePermissions(nM, {
              KICK_MEMBERS: true,
              MANAGE_CHANNELS: true
            });
          if (!servers[nM.guild.id]) servers[nM.guild.id] = {};
          if (!servers[nM.guild.id].voiceMember)
            servers[nM.guild.id].voiceMember = {};
          if (!servers[nM.guild.id].voiceMember[nM.id])
            servers[nM.guild.id].voiceMember[nM.id] = {};
          if (!servers[nM.guild.id].voiceMember[nM.id].room)
            servers[nM.guild.id].voiceMember[nM.id].room = room.id;
          servers[nM.guild.id].voiceMember[nM.id].room = room.id;
          if (!servers[nM.guild.id].voiceMember[nM.id].interval)
            servers[nM.guild.id].voiceMember[nM.id].interval = {};
          servers[nM.guild.id].voiceMember[nM.id].interval = setInterval(() => {
            if (nM.voiceChannel) {
              if (
                servers[nM.guild.id].voiceMember[nM.id].room !=
                nM.voiceChannel.id
              ) {
                nM.voiceChannel.guild.channels
                  .find(
                    channel =>
                      channel.id == servers[nM.guild.id].voiceMember[nM.id].room
                  )
                  .delete();
                clearInterval(servers[nM.guild.id].voiceMember[nM.id].interval);
              }
            } else if (!nM.voiceChannel) {
              //oM.voiceChannel.guild.channels.find(channel=>channel.id == servers[nM.guild.id].voiceMember[nM.id].room).delete();
              clearInterval(servers[nM.guild.id].voiceMember[nM.id].interval);
            }
          }, 3000);
        });
    }
  }
  //При выходе из канала, удаление приват комнаты
  if (!nM.voiceChannel) {
    if (!servers[nM.guild.id]) servers[nM.guild.id] = {};
    if (!servers[nM.guild.id].voiceMember)
      servers[nM.guild.id].voiceMember = {};
    if (!servers[nM.guild.id].voiceMember[nM.id])
      servers[nM.guild.id].voiceMember[nM.id] = {};
    if (!servers[nM.guild.id].voiceMember[nM.id].room)
      servers[nM.guild.id].voiceMember[nM.id].room = 0;
    if (!oM.voiceChannel) return;
    if (servers[nM.guild.id].voiceMember[nM.id].room == oM.voiceChannel.id) {
      oM.voiceChannel.guild.channels
        .find(
          channel => channel.id == servers[nM.guild.id].voiceMember[nM.id].room
        )
        .delete();
    }
  }
};
- основной код.

const discord = require("discord.js"),
  createPrivateRoom = require("./events/createPrivateRoom.js");

var client = new discord.Client();

client.on("ready", () => {
  console.log(`Привет, ${client.user.username} онлайн!`);

  client.user.setPresence({
    status: "online",
    game: {
      name: "за приватами",
      type: "WATCHING"
    }
  });
});

client.on("voiceStateUpdate", (oldMember, newMember) => {
  createPrivateRoom(oldMember, newMember);
});

client.login("токен");
- index.js

Так же подскажите как сделать команду для "кика" человека из данного голосового канала, так же как и на 89squad и Tenderly. К примеру создатель "приватной комнаты не желает видеть человека, он пишет команду !pkick @упоминание и человеку закрывается доступ в канал.
  • Вопрос задан
  • 757 просмотров
Пригласить эксперта
Ответы на вопрос 1
@ZakhaRekt
Js Developer
Чтобы сделать команду !pkick вам нужно сделать проверку на аргументы, далее изменить права канала для участника и после этого отключить его с канала (принудительно).
А убрать то что бы приват удалялся - просто убрать лишний код , который удаляет приват.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы