-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathremind.js
77 lines (67 loc) · 2.26 KB
/
remind.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
const { MessageEmbed } = require("discord.js");
const mongo = require("./mongo");
const Event = require("./models/event.model");
const { getDateAndTime } = require("./utils/getDateAndTime");
const formatDate = (date) => {
const dd = String(date.getDate()).padStart(2, "0");
const mm = String(date.getMonth() + 1).padStart(2, "0"); //January is 0!
const yyyy = date.getFullYear();
const resDate = yyyy + "/" + mm + "/" + dd;
return resDate;
};
const diffLessThanHour = (currTime, eventTime) => {
const diff = eventTime - currTime;
return diff <= 3600000 && diff >= 0 ? true : false;
};
const compute = (eventObjects) => {
const events = [];
for (let index in eventObjects) {
const elem = eventObjects[index];
index = String(parseInt(index) + 1);
const dateAndTime = getDateAndTime(elem.date);
events.push({
name: `${index}. ${elem.title}`,
value: `**Date:** ${dateAndTime[0]}
**Time:** ${dateAndTime[1]}
**Venue:** ${elem.venue}`,
inline: false,
});
}
return events;
};
module.exports = async (bot) => {
const guild = await bot.guilds.fetch(process.env.SERVER_GUILD_ID);
const channel = guild.channels.cache.find((ch) => ch.name === "general");
await mongo().then(async (mongoose) => {
try {
await Event.find()
.sort("date")
.then((response) => {
let events = [];
let today = new Date();
for (let index in response) {
if (formatDate(response[index].date) === formatDate(today)) {
let currTime = today.getTime();
let eventTime = response[index].date.getTime();
if (diffLessThanHour(currTime, eventTime)) {
events.push(response[index]);
}
}
}
let eventFormatted = compute(events);
if (eventFormatted.length) {
const embed = new MessageEmbed()
.setTitle("Reminder!")
.setColor(0xff0000)
.setDescription(
"Hello, the following events are scheduled to occur in less than an hour!"
)
.addFields(eventFormatted);
channel.send(embed);
}
});
} finally {
mongoose.connection.close();
}
});
};