-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
113 lines (106 loc) · 2.96 KB
/
index.js
File metadata and controls
113 lines (106 loc) · 2.96 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
require("dotenv").config();
const os = require("os");
const trackError = require("./utils/track-error");
const { Client, GatewayIntentBits, Partials } = require("discord.js");
if (!process.env.DISCORD_TOKEN) {
trackError(new Error("no token in environment"));
process.exit(1);
}
const handlers = [];
const client = new Client({
intents:
GatewayIntentBits.Guilds |
GatewayIntentBits.GuildMessages |
GatewayIntentBits.DirectMessages |
GatewayIntentBits.MessageContent,
partials: [Partials.Channel]
});
client.on("ready", () => {
// eslint-disable-next-line no-console
console.log("Location confirmed. Sending supplies.");
});
client.on("messageCreate", message => {
if (message.author.username !== client.user.username) {
for (const h of handlers) {
if (h(message)) {
break;
}
}
}
});
client.login(process.env.DISCORD_TOKEN);
function replyBuilder(originalMessage, responseMsg, opts) {
if (!originalMessage.channel) {
client.channels.fetch(originalMessage.channelId).then(channel => {
channel.send(responseMsg, opts);
});
} else {
originalMessage.channel.send(responseMsg, opts);
}
}
const bot = {
hears: (queries, handler) => {
handlers.push(message => {
const lowercaseContent = message.content.toLowerCase();
if (queries.some(q => lowercaseContent.includes(q))) {
message.reply = (msg, opts) => replyBuilder(message, msg, opts);
handler(message);
// unless we build a handler response, don't stop handling messages
// return true;
}
});
},
hearsAnythingInChannel: (channelId, handler) => {
handlers.push(message => {
if (channelId === message.channelId) {
message.reply = (msg, opts) => replyBuilder(message, msg, opts);
handler(message);
// same as above ^
// return true;
}
});
}
};
require("./handlers/paycheck")(bot);
require("./handlers/budget")(bot);
require("./handlers/tempBudget")(bot);
require("./handlers/weight")(bot);
require("./handlers/gdq")(bot);
require("./handlers/bookmancy/index")(bot);
require("./handlers/dailytext")(bot);
require("./handlers/inflation")(bot);
require("./handlers/cryptonics")(bot);
require("./handlers/reminders")(bot);
require("./handlers/sf/gg")(bot);
require("./handlers/xe")(bot);
require("./handlers/shindig")(bot);
require("./handlers/shop")(bot);
bot.hears(["uptime"], ({ reply }) => {
let uptime = process.uptime();
let unit = "second";
if (uptime > 60) {
uptime = uptime / 60;
unit = "minute";
}
if (uptime > 60) {
uptime = uptime / 60;
unit = "hour";
}
if (uptime > 24) {
uptime = uptime / 24;
unit = "day";
}
if (uptime > 30) {
uptime = uptime / 30;
unit = "month";
}
if (uptime != 1) {
unit = unit + "s";
}
reply(
`:robot_face: I have been running for ${uptime} ${unit} on ${os.hostname()}.`
);
});
bot.hears(["whoami"], ({ reply, author }) =>
reply(`${author.username} \`${author.id}\``)
);