This repository was archived by the owner on May 8, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathaccessManager.js
More file actions
122 lines (99 loc) · 2.59 KB
/
accessManager.js
File metadata and controls
122 lines (99 loc) · 2.59 KB
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
const fs = require('fs');
const logger = require('./logger');
const moment = require('moment');
//================================================================
// save/load
//================================================================
var loadData = function() {
if(module.didLoad) return;
try {
fs.statSync('save/access.json');
var obj = require('save/access.json');
module.persist = obj;
module.didLoad = true;
} catch(e) {
logger.log("Error loading access list, starting new");
module.persist = {
banned: {},
muted: {}
};
}
}
var saveData = function() {
if(!module.didLoad) return;
try {
fs.writeFileSync('save/access.json', JSON.stringify(module.persist));
} catch(e) {
logger.error("Error saving access.json", e);
}
}
//================================================================
// administration
//================================================================
var getBanList = function() {
return module.persist.banned;
}
var getMuteList = function() {
return module.persist.muted;
}
var getBan = function(id) {
return module.persist.banned[id];
}
var ban = function(blid, duration, reason) {
if(reason == "" || reason == null) {
reason = "unspecified";
}
var banObj = {
"blid": blid,
"duration": duration,
"reason": reason,
"time": moment()
}
logger.log("BL_ID " + blid + " banned for " + duration + ' seconds, "' + reason + '"');
module.persist.banned[blid] = banObj;
saveData();
}
var mute = function(blid, duration, reason) {
if(reason == "" || reason == null) {
reason = "unspecified";
}
var muteObj = {
"blid": blid,
"duration": duration,
"reason": reason,
"time": moment()
}
logger.log("BL_ID " + blid + " muted for " + duration + ' seconds, "' + reason + '"');
module.persist.banned[blid] = banObj;
saveData();
}
var isBanned = function(blid) {
var banObj = module.persist.banned[blid];
if(banObj == null) {
return false;
}
var timeSince = moment().diff(banObj.time, 'seconds');
if(timeSince >= banObj.duration) {
module.persist.banned[blid] = undefined;
saveData();
return false;
} else {
return true;
}
}
var isMute = function(blid) {
var muteObj = module.persist.muted[blid];
if(muteObj == null) {
return false;
}
var timeSince = moment().diff(muteObj.time, 'seconds');
if(timeSince >= muteObj.duration) {
module.persist.muted[blid] = undefined;
saveData();
return false;
} else {
return true;
}
}
loadData();
module.exports = {getBanList, getMuteList, ban, getBan, mute, isBanned, isMute};