42 lines
1.3 KiB
TypeScript
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);
|