import { Message } from "discord.js"; // branded types to differentiate objects of identical Type but different contents export type VoteEndMessage = Message & { readonly __brand: 'vote' } export type AnnouncementMessage = Message & { readonly __brand: 'announcement' } export type VoteMessage = Message & { readonly __brand: 'voteend' } export type DiscordMessage = VoteMessage | VoteEndMessage | AnnouncementMessage export function isVoteMessage(message: Message): message is VoteMessage { return message.cleanContent.includes('[Abstimmung]') } export function isInitialAnnouncement(message: Message): message is AnnouncementMessage { return message.cleanContent.includes("[initial]") } export function isVoteEndedMessage(message: Message): message is VoteEndMessage { return message.cleanContent.includes("[Abstimmung beendet]") }