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