44 lines
2.2 KiB
TypeScript
44 lines
2.2 KiB
TypeScript
|
import { BaseFetchOptions, ChannelType, GuildBasedChannel, GuildChannelResolvable, GuildMember, GuildScheduledEvent, GuildScheduledEventStatus, Message, TextChannel, messageLink } from "discord.js";
|
|||
|
import { v4 as uuid } from "uuid";
|
|||
|
import { jellyfinHandler } from "../..";
|
|||
|
import { getGuildSpecificTriggerRoleId } from "../helper/roleFilter";
|
|||
|
import { logger } from "../logger";
|
|||
|
import { config } from "../configuration";
|
|||
|
|
|||
|
|
|||
|
export const name = 'guildScheduledEventCreate'
|
|||
|
|
|||
|
const emotes = ["1️⃣", "2️⃣", "3️⃣", "4️⃣", "5️⃣", "6️⃣", "7️⃣", "8️⃣", "9️⃣", "🔟"]
|
|||
|
|
|||
|
export async function execute(event: GuildScheduledEvent) {
|
|||
|
const requestId = uuid()
|
|||
|
logger.debug(`New event created: ${JSON.stringify(event, null, 2)}`, { guildId: event.guildId, requestId })
|
|||
|
|
|||
|
if (event.name.toLowerCase().includes("!nextwp")) {
|
|||
|
logger.info("Event was a placeholder event to start a new watchparty and voting. Creating vote!", { guildId: event.guildId, requestId })
|
|||
|
logger.debug("Renaming event", { guildId: event.guildId, requestId })
|
|||
|
event.edit({ name: "Watchparty - Voting offen" })
|
|||
|
const movies = await jellyfinHandler.getRandomMovies(5, event.guildId, requestId)
|
|||
|
|
|||
|
logger.info(`Got ${movies.length} random movies. Creating voting`, { guildId: event.guildId, requestId })
|
|||
|
logger.debug(`Movies: ${JSON.stringify(movies.map(movie => movie.name))}`, { guildId: event.guildId, requestId })
|
|||
|
|
|||
|
|
|||
|
|
|||
|
const channel: TextChannel = <TextChannel>(await event.guild?.channels.fetch())?.filter(channel => channel!.id === config.bot.announcement_channel_id).map((value, _) => value)[0] //todo: needs to be done less sketchy
|
|||
|
logger.debug(`Found channel ${JSON.stringify(channel, null, 2)}`)
|
|||
|
|
|||
|
let message = "Es gibt eine neue Abstimmung für die nächste Watchparty! Stimme hierunter für den nächsten Film ab!\n"
|
|||
|
|
|||
|
for (let i = 0; i < movies.length; i++) {
|
|||
|
message = message.concat(emotes[i]).concat(": ").concat(movies[i].name!).concat("\n")
|
|||
|
}
|
|||
|
|
|||
|
const sentMessage: Message<true> = await (await channel.fetch()).send(message)
|
|||
|
|
|||
|
for (let i = 0; i < movies.length; i++) {
|
|||
|
sentMessage.react(emotes[i])
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|