-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.js
157 lines (132 loc) · 5.45 KB
/
utils.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
const con = require('./backend.js');
const config = require('./config.json')
const Discord = require("discord.js")
const moment = require("moment-timezone");
var CronJobManager = require('cron-job-manager'),
manager = new CronJobManager();
const prefix = config.prefix
const defaultUTC = config.defaultUTC
const midNightTime = config.midNightTime
module.exports.config = {prefix, defaultUTC, midNightTime}
module.exports.setupScheduledMessage = setupScheduledMessage;
async function setupScheduledMessage(msg, region = defaultUTC) {
try {
manager.add(msg.guild.id, midNightTime, () => { registerServersDayRecords(msg.guild.id) }, {
start: true,
timeZone: region
//onComplete: () => {}
})
await con.set(msg.guild.id, "scheduled_region", region)
}
catch (e) {
if (manager.exists(msg.guild.id)) {
manager.deleteJob(msg.guild.id)
manager.add(msg.guild.id, midNightTime, () => { registerServersDayRecords(msg.guild.id) }, {
start: true,
timeZone: regionToChange
//onComplete: () => {}
})
await con.set(msg.guild.id, "scheduled_region", regionToChange)
msg.channel.send('Região invalida, utilize o comando `%help`')
}
}
}
module.exports.changeServerTimeZone = changeServerTimeZone;
async function changeServerTimeZone(msg, regionToChange) {
if (regionToChange == null) {
msg.channel.send('Região indefinida, utilize o comando `' + prefix + 'help changetimezone`')
return
//regionToChange = defaultUTC
}
if (moment.tz.zone(regionToChange) == null) {
msg.channel.send('Região inválida, utilize o comando `' + prefix + 'help changetimezone`')
return
}
if (manager.exists(msg.guild.id)) {
manager.deleteJob(msg.guild.id)
scheduleServer(msg.guild.id, regionToChange)
await con.set(msg.guild.id, "scheduled_region", regionToChange)
msg.channel.send('Região definida para ' + regionToChange + ' com sucesso.')
} else {
scheduleServer(msg.guild.id, regionToChange)
await con.set(msg.guild.id, "scheduled_region", regionToChange)
msg.channel.send('Região definida para ' + regionToChange + ' com sucesso.')
}
}
module.exports.sendEmbedServerRecords = sendEmbedServerRecords;
async function sendEmbedServerRecords(channel, guild) {
let daysMensageRecordArray = await con.getRecords(guild.id)
console.log(daysMensageRecordArray)
if (!daysMensageRecordArray || daysMensageRecordArray == undefined) {
channel.send('Ainda não há recordes.')
return
}
// organiza a array do maior pro menor
// ja vem organizada
// daysMensageRecordArray.sort((a, b) => {
// return b - a
// })
for (i = 0; i < 5; i++) {
if (daysMensageRecordArray[i] == undefined)
daysMensageRecordArray[i] = 0
}
const embed = new Discord.MessageEmbed()
.setTitle(`O recorde de mensagens diarias do servidor:\n:trophy:: **${daysMensageRecordArray[0]}** :first_place: `)
.setColor('#04bfbf')
.setDescription(`:two:: ${daysMensageRecordArray[1]} :second_place:\n` +
`:three:: ${daysMensageRecordArray[2]} :third_place:\n` +
`:four:: ${daysMensageRecordArray[3]}\n` +
`:five:: ${daysMensageRecordArray[4]}\n`)
.setThumbnail(guild.iconURL())
channel.send(embed)
}
module.exports.setupSchedules = setupSchedules;
async function setupSchedules() {
const servers = await con.getServers()
servers.map((server) => {
if (server.scheduled_region != null) {
scheduleServer(server.server_id, server.scheduled_region)
}
})
// for (let server of servers) {
// if (server.scheduled_region != null) {
// scheduleServer(server.server_id, server.scheduled_region)
// }
// //const cronJob = new cron.CronJob(midNightTime, function() {testRegisterServersDayRecords(server.server_id)}, null, true, server.scheduled_region);
// //cronJob.start();
// //await new Promise(resolve => setTimeout(resolve, 5000));
// }
// }
}
module.exports.registerServersDayRecords = registerServersDayRecords;
async function registerServersDayRecords(serverId) {
let defaultChannel = ''
let channelSetted = await con.get(serverId, 'default_channel_id')
let guild;
if (channelSetted == null){
//fix provisorio
guild = require('./main.js').botGuild(serverId)
guild.channels.cache.forEach((channel) => {
if (channel.type == "text" && defaultChannel == '') {
if (channel.permissionsFor(guild.me).has("SEND_MESSAGES")) {
defaultChannel = channel
}
}
})
}else{
defaultChannel = channelSetted
}
let numberOfMesages = await con.get(serverId, 'number_of_mensages')
await con.push(guild.id, 'days_mensage_record', numberOfMesages)
con.set(guild.id, 'number_of_mensages', 0)
defaultChannel.send("Foi salvo o numero de mensagens de hoje que foram: " + numberOfMesages)
sendEmbedServerRecords(defaultChannel, guild)
}
module.exports.scheduleServer = scheduleServer;
function scheduleServer(guildId, timeZone) {
manager.add(guildId, midNightTime, () => { registerServersDayRecords(guildId) }, {
start: true,
timeZone: timeZone
//onComplete: () => {}
})
}