-
Notifications
You must be signed in to change notification settings - Fork 18
/
jointocreate.js
104 lines (99 loc) · 4.04 KB
/
jointocreate.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
const config = require("./config");
const jointocreatemap = new Map();
module.exports = function (client) {
const description = {
name: "jointocreate",
filename: "jointocreate.js",
version: "3.2"
}
new Promise(resolve => {
setInterval(() => {
resolve(2);
try {
const guild = client.guilds.cache.get(config.guildid);
const channels = guild.channels.cache.map(ch => ch.id)
for (let i = 0; i < channels.length; i++) {
const key = `tempvoicechannel_${guild.id}_${channels[i]}`;
if (jointocreatemap.get(key)) {
var vc = guild.channels.cache.get(jointocreatemap.get(key));
if (vc.members.size < 1) {
jointocreatemap.delete(key);
return vc.delete();
} else { }
}
}
} catch { }
}, 10000)
})
client.on("voiceStateUpdate", (oldState, newState) => {
let oldparentname = "unknown"
let oldchannelname = "unknown"
let oldchanelid = "unknown"
if (oldState && oldState.channel && oldState.channel.parent && oldState.channel.parent.name) oldparentname = oldState.channel.parent.name
if (oldState && oldState.channel && oldState.channel.name) oldchannelname = oldState.channel.name
if (oldState && oldState.channelID) oldchanelid = oldState.channelID
let newparentname = "unknown"
let newchannelname = "unknown"
let newchanelid = "unknown"
if (newState && newState.channel && newState.channel.parent && newState.channel.parent.name) newparentname = newState.channel.parent.name
if (newState && newState.channel && newState.channel.name) newchannelname = newState.channel.name
if (newState && newState.channelID) newchanelid = newState.channelID
if (oldState.channelID) {
if (typeof oldState.channel.parent !== "undefined") oldChannelName = `${oldparentname}\n\t**${oldchannelname}**\n*${oldchanelid}*`
else oldChannelName = `-\n\t**${oldparentname}**\n*${oldchanelid}*`
}
if (newState.channelID) {
if (typeof newState.channel.parent !== "undefined") newChannelName = `${newparentname}\n\t**${newchannelname}**\n*${newchanelid}*`
else newChannelName = `-\n\t**${newchannelname}**\n*${newchanelid}*`
}
if (!oldState.channelID && newState.channelID) {
if (newState.channelID !== config.JOINTOCREATECHANNEL) return;
jointocreatechannel(newState);
}
if (oldState.channelID && !newState.channelID) {
if (jointocreatemap.get(`tempvoicechannel_${oldState.guild.id}_${oldState.channelID}`)) {
var vc = oldState.guild.channels.cache.get(jointocreatemap.get(`tempvoicechannel_${oldState.guild.id}_${oldState.channelID}`));
if (vc.members.size < 1) {
jointocreatemap.delete(`tempvoicechannel_${oldState.guild.id}_${oldState.channelID}`);
return vc.delete();
}
else {
}
}
}
if (oldState.channelID && newState.channelID) {
if (oldState.channelID !== newState.channelID) {
if (newState.channelID === config.JOINTOCREATECHANNEL)
jointocreatechannel(oldState);
if (jointocreatemap.get(`tempvoicechannel_${oldState.guild.id}_${oldState.channelID}`)) {
var vc = oldState.guild.channels.cache.get(jointocreatemap.get(`tempvoicechannel_${oldState.guild.id}_${oldState.channelID}`));
if (vc.members.size < 1) {
jointocreatemap.delete(`tempvoicechannel_${oldState.guild.id}_${oldState.channelID}`);
return vc.delete();
}
else {
}
}
}
}
})
async function jointocreatechannel(user) {
await user.guild.channels.create(`${user.member.user.username}'s room`, {
type: 'voice',
parent: user.channel.parent.id,
}).then(async vc => {
user.setChannel(vc);
jointocreatemap.set(`tempvoicechannel_${vc.guild.id}_${vc.id}`, vc.id);
await vc.overwritePermissions([
{
id: user.id,
allow: ['MANAGE_CHANNELS'],
},
{
id: user.guild.id,
allow: ['VIEW_CHANNEL'],
},
]);
})
}
}