use branded types for messageType determination
This commit is contained in:
@ -1,11 +1,20 @@
|
||||
import { Message } from "discord.js";
|
||||
|
||||
export function messageIsVoteMessage(msg: Message): boolean {
|
||||
|
||||
// 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(msg: Message): msg is VoteMessage {
|
||||
return msg.cleanContent.includes('[Abstimmung]')
|
||||
}
|
||||
export function messageIsInitialAnnouncement(msg: Message): boolean {
|
||||
export function isInitialAnnouncement(msg: Message): msg is AnnouncementMessage {
|
||||
return msg.cleanContent.includes("[initial]")
|
||||
}
|
||||
export function messageIsVoteEndedMessage(msg: Message): boolean {
|
||||
export function isVoteEndedMessage(msg: Message): msg is VoteEndMessage {
|
||||
return msg.cleanContent.includes("[Abstimmung beendet]")
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user