-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathservergroupSwitcher.js
160 lines (149 loc) · 6.07 KB
/
servergroupSwitcher.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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
registerPlugin({
name: 'Servergroup Switcher',
version: '0.6',
description: 'Removes specific servergroups if another specific ones has been given!',
author: 'Everlike <[email protected]> | HUGE thaks to Diesmon -> https://forum.sinusbot.com/members/diesmon.3847/ ',
vars: [
{
name: 'removeifisself',
title: 'Do you also want to automatically remove/add Servergroups if your Bot assigned the Servergroup?',
type: 'select',
placeholder: 'yes',
options: [
'yes',
'no'
]
},
{
name: 'logOutput',
title: 'No trigger-logs to engine log',
type: 'checkbox'
},
{
name: 'serverGroupsRe',
title: 'General Settings (Remove)',
type: 'array',
vars: [
{
name: 'sgTrigger',
title: 'Servergroups that trigger a remove when given',
indent: 1,
type: 'strings',
},
{
name: 'sgToRemove',
title: 'Servergroups to remove',
indent: 1,
type: 'strings'
},
{
name: 'OStag',
title: 'Remove OS-Tag when exists',
indent: 1,
type: 'checkbox'
}
]
},
{
name: 'serverGroupsAdd',
title: 'General Settings (Add)',
type: 'array',
vars: [
{
name: 'sgTrigger',
title: 'Servergroups that trigger an add when given',
indent: 1,
type: 'strings',
},
{
name: 'sgToAdd',
title: 'Servergroups to add',
indent: 1,
type: 'strings'
},
{
name: 'OStag',
title: 'Add OS-Tag',
indent: 1,
type: 'checkbox'
}
]
},
]
}, function (sinusbot, config) {
var engine = require ('engine');
var backend = require('backend');
var event = require ('event');
event.on('serverGroupAdded', function(ev) {
var removeifisself = config.removeifisself || 0;
let client = ev.client;
if (ev.invoker.isSelf() && removeifisself == 1) {
return
}
else {
var invoker = ev.invoker.name();
};
/* Added by Michael (16.12.2021)
/* invoker will be set in client description text
/* --------------------------- Datum formatieren ----------------------------------*/
var date = new Date();
const formatDate = (date)=> {
let formatted_date = date.getDate() + "." + (date.getMonth() + 1) + "." + date.getFullYear()
return formatted_date;
}
/* User, die nur das Addon "Notification" oder "QRM" bekommen und TOT-Probleme -> vernachlässigen */
if (ev.serverGroup.id() != 19 && (!hasServerGroupWithID(client, 11)) && (!hasServerGroupWithID(client, 15)) && ev.serverGroup.id() != 113) { /*QRM, vorh. Gateway, vor. Verlinkung */
if (ev.serverGroup.id() != 104) { /* Notification */
ev.client.setDescription("Geändert von: >" + invoker + "< (" + formatDate(date) + ") »" + ev.serverGroup.name() + "«")
event.log("Event startet by: >" + invoker + "< (" + formatDate(date) + ") for client: " + ev.client.name() + " »" + ev.serverGroup.name() + "«")
}
}
/*-------------------------------Remove Servergroups-------------------------------*/
engine.log("Added groupID was: " + ev.serverGroup.id());
var groupsToRemove = [];
for (var serverGroup in config.serverGroupsRe) {
for (var triggerGroup in config.serverGroupsRe[serverGroup].sgTrigger) {
if (config.logOutput) engine.log("Trigger group ID loop: " + config.serverGroupsRe[serverGroup].sgTrigger[triggerGroup])
if (ev.serverGroup.id() == config.serverGroupsRe[serverGroup].sgTrigger[triggerGroup]) {
if (config.logOutput) engine.log("Old groupsToRemove length: " + groupsToRemove.length)
groupsToRemove = groupsToRemove.concat(config.serverGroupsRe[serverGroup].sgToRemove)
if (config.serverGroupsRe[serverGroup].OStag) groupsToRemove.push(getPlatform(ev.client));
if (config.logOutput) engine.log("New groupsToRemove length: " + groupsToRem0ove.length)
break;
}
}
}
for (var group in groupsToRemove) {
engine.log("Removing ID: " + groupsToRemove[group])
ev.client.removeFromServerGroup(groupsToRemove[group]);
}
/*-------------------------------Add Servergroups-------------------------------*/
var groupsToAdd = [];
for (var serverGroup in config.serverGroupsAdd) {
for (var triggerGroup in config.serverGroupsAdd[serverGroup].sgTrigger) {
if (config.logOutput) engine.log("Trigger group ID loop: " + config.serverGroupsAdd[serverGroup].sgTrigger[triggerGroup])
if (ev.serverGroup.id() == config.serverGroupsAdd[serverGroup].sgTrigger[triggerGroup]) {
if (config.logOutput) engine.log("Old groupsToAdd length: " + groupsToAdd.length)
groupsToAdd = groupsToAdd.concat(config.serverGroupsAdd[serverGroup].sgToAdd)
if (config.serverGroupsAdd[serverGroup].OStag) groupsToAdd.push(getPlatform(ev.client));
if (config.logOutput) engine.log("New groupsToAdd length: " + groupsToAdd.length)
break;
}
}
}
for (var group in groupsToAdd) {
engine.log("Adding ID: " + groupsToAdd[group])
ev.client.addToServerGroup(groupsToAdd[group])
}
});
function hasServerGroupWithID(client, id) {
return client.getServerGroups().some(group => {
return group.id() == id;
});
}
function getPlatform(client) {
if (client.getPlatform() == 'Android') return 168;
if (client.getPlatform() == 'Windows') return 169;
if (client.getPlatform() == 'Linux') return 170;
}
});