40 lines
No EOL
1.4 KiB
TypeScript
40 lines
No EOL
1.4 KiB
TypeScript
import { Client, EmbedBuilder, Events, GatewayIntentBits } from "discord.js";
|
|
import { db } from "./db";
|
|
import { formatSize } from "./lib";
|
|
import { StereoFile } from "./types";
|
|
|
|
const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent] });
|
|
|
|
client.once(Events.ClientReady, (c) => {
|
|
console.log(c.user.tag);
|
|
});
|
|
|
|
client.on(Events.MessageCreate, async (message) => {
|
|
if (message.author.bot) return;
|
|
if (client.user && message.mentions.has(client.user)) {
|
|
let files = await db.all<StereoFile[]>`SELECT * FROM files WHERE owner = ${message.author.id}`;
|
|
let totalSize = files.reduce((a, b) => a + b.size, 0);
|
|
|
|
const embed = new EmbedBuilder()
|
|
.setColor(0xff264e)
|
|
.setAuthor({
|
|
name: `${message.author.globalName || "user"} on stereo`,
|
|
iconURL: message.author.avatarURL({ size: 512 }) || ""
|
|
})
|
|
.setDescription("here's your overview:")
|
|
.addFields(
|
|
{ name: "Uploads", value: `${files.length} files`, inline: true },
|
|
{ name: "Uploaded", value: `${formatSize(totalSize)} / 15 GB`, inline: true },
|
|
{ name: "Plan", value: `Free`, inline: true }
|
|
)
|
|
.setFooter({ text: "powered by stereo" })
|
|
.setTimestamp();
|
|
|
|
await message.reply({ embeds: [embed] });
|
|
}
|
|
});
|
|
|
|
client.login(process.env.TOKEN).catch((err) => {
|
|
console.error("Failed to login:", err)
|
|
process.exit(1)
|
|
}); |