-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
72 lines (63 loc) · 2.36 KB
/
index.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
require('dotenv').config();
const { ACTIVITIES, switch_activity_sec, bot_status } = require('./config')
const { Client, GatewayIntentBits, InteractionType, Events } = require('discord.js');
const { registerCommands, handleCommandInteraction } = require('./interactionHandlers/commands');
const { convertJsonToTable } = require('./tools/getTable');
const { handleTextMessage } = require('./message');
const {
handleButtonInteraction,
handleModalSubmit,
handleSelectMenuInteraction,
} = require('./interactionHandlers');
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
GatewayIntentBits.DirectMessages,
],
});
// <=====[ Handling ]=====>
client.once(Events.ClientReady, async () => {
console.log(convertJsonToTable({ 'Status': ['Name', 'ID'], 'Logged In!': [client.user.tag, client.user.id]}));
registerCommands(client);
startActivityUpdates(client);
});
function startActivityUpdates(client) {
updateActivity(client);
client.user.setStatus(bot_status);
setInterval(() => updateActivity(client), switch_activity_sec*1000);
}
function updateActivity(client) {
const activity = ACTIVITIES[Math.floor(Math.random() * ACTIVITIES.length)];
client.user.setActivity(activity.name, { type: activity.type, url: activity.url });
}
client.rest.on('rateLimited', (info) => {
console.log(convertJsonToTable({ 'Status': ['Timeout', 'Limit'], 'Rate Limited!': [`${info.timeout}ms`, info.limit]}));
});
client.on(Events.InteractionCreate, async (interaction) => {
try {
if (interaction.isCommand() || interaction.isUserContextMenuCommand()) {
await handleCommandInteraction(interaction);
} else if (interaction.isButton()) {
await handleButtonInteraction(interaction);
} else if (interaction.isModalSubmit()) {
await handleModalSubmit(interaction);
} else if (interaction.isStringSelectMenu()) {
await handleSelectMenuInteraction(interaction);
}
} catch (error) {
console.error('Error handling interaction:', error.message);
}
});
client.on(Events.MessageCreate, (message) => {
try {
if (message.author.bot) return;
if (message.mentions.users.has(client.user.id)) {
handleTextMessage(message);
}
} catch (error) {
console.error(`Error handling message:`, error);
}
});
client.login(process.env.DISCORD_TOKEN);