Files
PluralFlux-infra/bot.js

66 lines
2.2 KiB
JavaScript
Raw Normal View History

import { Client, GatewayDispatchEvents } from "@discordjs/core";
import { REST } from "@discordjs/rest";
import { WebSocketManager } from "@discordjs/ws";
import { db } from './sequelize.js';
import { webhookHelper } from "./helpers/webhookHelper.js";
import { messageHelper } from "./helpers/messageHelper.js";
import { memberHelper } from "./helpers/memberHelper.js";
const token = process.env.FLUXER_BOT_TOKEN;
if (!token) {
console.error("Missing FLUXER_BOT_TOKEN environment variable.");
process.exit(1);
}
const rest = new REST({
api: "https://api.fluxer.app",
version: "1",
}).setToken(token);
const gateway = new WebSocketManager({
token,
intents: 0, // Fluxer has no intents yet
rest,
version: "1",
});
export const client = new Client({ rest, gateway });
let plural_flux_name = "";
let plural_flux_discriminator = "";
client.on(GatewayDispatchEvents.MessageCreate, async ({ api, data }) => {
if (data.webhook_id) {
return;
}
else if (data.author.username === plural_flux_name && data.author.discriminator === plural_flux_discriminator) {
return;
}
else if (!data.content.startsWith(messageHelper.prefix)) {
const proxyMatch = await messageHelper.parse_proxy_tags(data.author.id, data.content);
if (!proxyMatch.proxy) {
return;
}
const member = await memberHelper.get_member_by_proxy(data.author.id, proxyMatch.proxy);
await webhookHelper.replace_message(api, data, proxyMatch.message, member);
}
else {
const command_name = data.content.slice(messageHelper.prefix.length).split(" ")[0];
const args = messageHelper.parse_command_args(data.content, command_name);
if (command_name === "member" || command_name === "m") {
const reply = await memberHelper.parse_member_command(data.author.id, args);
await api.channels.createMessage(data.channel_id, {content: reply});
}
}
});
client.on(GatewayDispatchEvents.Ready, async ({data}) => {
console.log(`Logged in as ${data.user.username}#${data.user.discriminator}`);
plural_flux_name = data.user.username;
plural_flux_discriminator = data.user.discriminator;
await db.check_connection();
});
gateway.connect();