Files
2026-06-21 03:53:06 +03:00

42 lines
1.3 KiB
TypeScript

import { Client, IntentsBitField, Events } from "discord.js";
import config from "./config.ts";
import axios from "axios";
import { redisCount } from "./utils/redis.ts";
// URL to invite bot: https://discord.com/api/oauth2/authorize?client_id=1071394728513380372&permissions=2147485696&scope=bot
const HOST_NAME = "https://www.watchparty.me";
const API_NAME = "https://backend.watchparty.me";
const client = new Client({
intents: [IntentsBitField.Flags.Guilds, IntentsBitField.Flags.GuildMessages],
});
client.on("ready", () => {
console.log("I am ready!");
console.log("bot is in %s guilds", client.guilds.cache.size);
});
client.on(Events.InteractionCreate, async (interaction) => {
if (!interaction.isChatInputCommand()) return;
if (interaction.commandName === "watch") {
const preload = interaction.options.get("video")?.value;
// Call the watchparty API to make a room
const response = await axios.post(API_NAME + "/createRoom", {
video: preload,
});
redisCount("discordBotWatch");
// Return the generated room URL
await interaction.reply({
content: `Created a new WatchParty${
preload ? ` with video ${preload}` : ""
}!
${HOST_NAME + "/watch" + response.data.name}
`,
});
}
});
client.login(config.DISCORD_BOT_TOKEN);