feat/40-reroll-on-disinterest #54
@ -6,7 +6,7 @@ import { Maybe } from '../interfaces'
|
||||
import { logger } from '../logger'
|
||||
import { Command } from '../structures/command'
|
||||
import { RunOptions } from '../types/commandTypes'
|
||||
import { messageIsInitialAnnouncement } from '../helper/messageIdentifiers'
|
||||
import { isInitialAnnouncement } from '../helper/messageIdentifiers'
|
||||
|
||||
export default new Command({
|
||||
name: 'announce',
|
||||
@ -62,7 +62,7 @@ async function sendInitialAnnouncement(guildId: string, requestId: string): Prom
|
||||
return
|
||||
}
|
||||
|
||||
const currentPinnedAnnouncementMessages = (await announcementChannel.messages.fetchPinned()).filter(message => messageIsInitialAnnouncement(message))
|
||||
const currentPinnedAnnouncementMessages = (await announcementChannel.messages.fetchPinned()).filter(message => isInitialAnnouncement(message))
|
||||
currentPinnedAnnouncementMessages.forEach(async (message) => await message.unpin())
|
||||
currentPinnedAnnouncementMessages.forEach(message => message.delete())
|
||||
|
||||
|
@ -2,7 +2,7 @@ import { Collection, GuildScheduledEvent, GuildScheduledEventStatus, Message } f
|
||||
import { v4 as uuid } from "uuid";
|
||||
import { client } from "../..";
|
||||
import { logger } from "../logger";
|
||||
import { messageIsInitialAnnouncement } from "../helper/messageIdentifiers";
|
||||
import { isInitialAnnouncement } from "../helper/messageIdentifiers";
|
||||
|
||||
|
||||
export const name = 'guildScheduledEventUpdate'
|
||||
@ -26,7 +26,7 @@ export async function execute(oldEvent: GuildScheduledEvent, newEvent: GuildSche
|
||||
|
||||
const events = await newEvent.guild.scheduledEvents.fetch()
|
||||
|
||||
const wpAnnouncements = (await announcementChannel.messages.fetch()).filter(message => !messageIsInitialAnnouncement(message))
|
||||
const wpAnnouncements = (await announcementChannel.messages.fetch()).filter(message => !isInitialAnnouncement(message))
|
||||
const announcementsWithoutEvent = filterAnnouncementsByPendingWPs(wpAnnouncements, events)
|
||||
logger.info(`Deleting ${announcementsWithoutEvent.length} announcements.`, { guildId, requestId })
|
||||
announcementsWithoutEvent.forEach(message => message.delete())
|
||||
|
@ -1,11 +1,20 @@
|
||||
import { Message } from "discord.js";
|
||||
|
||||
export function messageIsVoteMessage(msg: Message): boolean {
|
||||
|
||||
magnetotail marked this conversation as resolved
Outdated
|
||||
// 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]")
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,7 @@ import { JellyfinHandler } from "../jellyfin/handler";
|
||||
import { logger } from "../logger";
|
||||
import { CommandType } from "../types/commandTypes";
|
||||
import { checkForPollsToClose } from "../commands/closepoll";
|
||||
import { messageIsInitialAnnouncement } from "../helper/messageIdentifiers";
|
||||
import { isInitialAnnouncement } from "../helper/messageIdentifiers";
|
||||
import VoteController from "../helper/vote.controller";
|
||||
|
||||
|
||||
@ -155,7 +155,7 @@ export class ExtendedClient extends Client {
|
||||
}
|
||||
this.announcementRoleHandlerTask.set(guild.id, schedule("*/10 * * * * *", async () => {
|
||||
const requestId = uuid()
|
||||
const messages = (await textChannel.messages.fetchPinned()).filter(message => messageIsInitialAnnouncement(message))
|
||||
const messages = (await textChannel.messages.fetchPinned()).filter(message => isInitialAnnouncement(message))
|
||||
|
||||
if (messages.size > 1) {
|
||||
logger.error("More than one pinned announcement Messages found. Unable to know which one people react to. Please fix!", { guildId: guild.id, requestId })
|
||||
|
Loading…
Reference in New Issue
Block a user
Would like an enum of message types and a method with input message and output array of message types for possible messages with multiple things.
Also maybe remove message at start of function names to improve visibility by shorter function name. "isVoteMessage(message)" is precise and readable enough