Создание приватных комнат discord, почти как на 89sqd

Сделать апдейт радужного бота?

  • Да

    Голосов: 24 88.9%
  • Нет

    Голосов: 3 11.1%

  • Всего проголосовало
    27
Начинающий
Статус
Оффлайн
Регистрация
30 Май 2017
Сообщения
25
Реакции[?]
30
Поинты[?]
0
Опа, а что это тут у нас?
Гайд почти на 100% состоит из исходника и немного объяснений(т.к. в основном никому не интересно читать и понимать).
Чтобы это всё работало вам нужен Node.js
Пожалуйста, авторизуйтесь для просмотра ссылки.
.
Далее создаём папку с проектом и открываем её в среде разработки, например VScode.
Далее в консоли переходим в директорию этой папки, и прописываем эту команду.
Screenshot_3.png(там всё можно пропустить)
В папке должен появится данный файлик, содержащий базовые настройки проекта.

Screenshot_4.png
Далее мы должны установить необходимые библиотеки, прописав данную команду в консоль.
npm i discord.js
У вас должна появится вот такая папочка.
1561715867309.png
Теперь дело за малым, создаём файлик index.js, в него пихаем этот код:
JavaScript:
const discord = require("discord.js"),createPrivateRoom = require("./events/createPrivateRoom.js");

var client = new discord.Client();

client.on("ready",()=>{
    console.log(`Бот запущен.`);
})

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

client.login("Суды токен бота");
Отлично, создаём в директории с этим файлом папку events, в которой создаём файл createPrivateRoom.js
Пожалуйста, авторизуйтесь для просмотра ссылки.

В данный файл мы закидываем этот код:
JavaScript:
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',
            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();
        }
    }
}
Теперь у вас есть приватные румы.
Есть некоторые проблемы связанные с этим кодом, во-первых, можно сделать лучше, во-вторых из-за частых созданий приваток, бот перестаёт создавать новые комнаты какое-то время, из-за ограничений дискорда. Можно сделать комнаты, которые скрыты пока пользователь не зайдёт, но возможно это я сделаю позже.
Всо!
 
Эксперт
Статус
Оффлайн
Регистрация
31 Авг 2018
Сообщения
1,792
Реакции[?]
1,073
Поинты[?]
29K
Опа, а что это тут у нас?
Гайд почти на 100% состоит из исходника и немного объяснений(т.к. в основном никому не интересно читать и понимать).
Чтобы это всё работало вам нужен Node.js
Пожалуйста, авторизуйтесь для просмотра ссылки.
.
Далее создаём папку с проектом и открываем её в среде разработки, например VScode.
Далее в консоли переходим в директорию этой папки, и прописываем эту команду.
Посмотреть вложение 30076(там всё можно пропустить)
В папке должен появится данный файлик, содержащий базовые настройки проекта.

Посмотреть вложение 30077
Далее мы должны установить необходимые библиотеки, прописав данную команду в консоль.
npm i discord.js
У вас должна появится вот такая папочка.
Посмотреть вложение 30078
Теперь дело за малым, создаём файлик index.js, в него пихаем этот код:
JavaScript:
const discord = require("discord.js"),createPrivateRoom = require("./events/createPrivateRoom.js");

var client = new discord.Client();

client.on("ready",()=>{
    console.log(`Бот запущен.`);
})

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

client.login("Суды токен бота");
Отлично, создаём в директории с этим файлом папку events, в которой создаём файл createPrivateRoom.js
Пожалуйста, авторизуйтесь для просмотра ссылки.

В данный файл мы закидываем этот код:
JavaScript:
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',
            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();
        }
    }
}
Теперь у вас есть приватные румы.
Есть некоторые проблемы связанные с этим кодом, во-первых, можно сделать лучше, во-вторых из-за частых созданий приваток, бот перестаёт создавать новые комнаты какое-то время, из-за ограничений дискорда. Можно сделать комнаты, которые скрыты пока пользователь не зайдёт, но возможно это я сделаю позже.
Всо!
Чтобы обойти ограничения дискорда можно скрывать/показывать комнаты

UPD: не увидел
 
Начинающий
Статус
Оффлайн
Регистрация
22 Авг 2019
Сообщения
2
Реакции[?]
0
Поинты[?]
0
ку(не шарю в этом всем говорю сразу)сделал все по инструкции,бот на сервере но он сидит оффлайн.Папка со всеми файлами есть,но я не понимаю как заставить бота включится и выполнять код?
 
Начинающий
Статус
Оффлайн
Регистрация
25 Ноя 2019
Сообщения
11
Реакции[?]
2
Поинты[?]
0
ку(не шарю в этом всем говорю сразу)сделал все по инструкции,бот на сервере но он сидит оффлайн.Папка со всеми файлами есть,но я не понимаю как заставить бота включится и выполнять код?
Открываешь терминал(ctrl+shift+`), пишешь node название.js
 
Новичок
Статус
Оффлайн
Регистрация
12 Май 2019
Сообщения
2
Реакции[?]
1
Поинты[?]
0
Опа, а что это тут у нас?
Гайд почти на 100% состоит из исходника и немного объяснений(т.к. в основном никому не интересно читать и понимать).
Чтобы это всё работало вам нужен Node.js
Пожалуйста, авторизуйтесь для просмотра ссылки.
.
Далее создаём папку с проектом и открываем её в среде разработки, например VScode.
Далее в консоли переходим в директорию этой папки, и прописываем эту команду.
Посмотреть вложение 30076(там всё можно пропустить)
В папке должен появится данный файлик, содержащий базовые настройки проекта.

Посмотреть вложение 30077
Далее мы должны установить необходимые библиотеки, прописав данную команду в консоль.
npm i discord.js
У вас должна появится вот такая папочка.
Посмотреть вложение 30078
Теперь дело за малым, создаём файлик index.js, в него пихаем этот код:
JavaScript:
const discord = require("discord.js"),createPrivateRoom = require("./events/createPrivateRoom.js");

var client = new discord.Client();

client.on("ready",()=>{
    console.log(`Бот запущен.`);
})

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

client.login("Суды токен бота");
Отлично, создаём в директории с этим файлом папку events, в которой создаём файл createPrivateRoom.js
Пожалуйста, авторизуйтесь для просмотра ссылки.

В данный файл мы закидываем этот код:
JavaScript:
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',
            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();
        }
    }
}
Теперь у вас есть приватные румы.
Есть некоторые проблемы связанные с этим кодом, во-первых, можно сделать лучше, во-вторых из-за частых созданий приваток, бот перестаёт создавать новые комнаты какое-то время, из-за ограничений дискорда. Можно сделать комнаты, которые скрыты пока пользователь не зайдёт, но возможно это я сделаю позже.
Всо!
Что если у меня вот такая консоль???
 
Новичок
Статус
Оффлайн
Регистрация
11 Апр 2020
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Мне помощь нужна. Бот в онлайне, но поставленную задачу делать румы не выполняет
 
Новичок
Статус
Оффлайн
Регистрация
21 Май 2020
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Помогите пожалуйста
Повторил все, что сказано в посте но бот не работает
В канале не появился канал для создания приваток
Что подскажете делать?
 
Сверху Снизу