feat/40-reroll-on-disinterest #54

Merged
kenobi merged 73 commits from feat/40-reroll-on-disinterest into master 2023-11-19 20:24:36 +01:00
3 changed files with 29 additions and 8 deletions
Showing only changes of commit 4600820889 - Show all commits

View File

@ -4,7 +4,6 @@ import { client, yavinJellyfinHandler } from "../..";
import { Maybe } from "../interfaces";
import { logger } from "../logger";
export const name = 'guildScheduledEventCreate'
export async function execute(event: GuildScheduledEvent) {
@ -25,15 +24,21 @@ export async function execute(event: GuildScheduledEvent) {
return
}
logger.debug(`Found channel ${JSON.stringify(announcementChannel, null, 2)}`, { guildId: event.guildId, requestId })
if (!event.scheduledStartAt) {
logger.info("EVENT DOES NOT HAVE STARTDATE; CANCELLING", { guildId: event.guildId, requestId })
logger.info("Event does not have a start date, cancelling", { guildId: event.guildId, requestId })
return
}
const sentMessageText = client.voteController.createVoteMessageText(event.id, event.scheduledStartAt, movies, event.guild?.id ?? "", requestId)
const sentMessage = await client.voteController.sendVoteMessage(sentMessageText, movies.length, announcementChannel)
const sentMessage = await client.voteController.prepareAndSendVoteMessage({
movies,
startDate: event.scheduledStartAt,
magnetotail marked this conversation as resolved Outdated

Warum erst eine message erstellen lassen die dann vom gleichen controller in der nächsten Zeile verschickt wird? Fände besser dem Controller zu sagen "Schick ne Vote message, hier sind die Infos die du brauchst"

Warum erst eine message erstellen lassen die dann vom gleichen controller in der nächsten Zeile verschickt wird? Fände besser dem Controller zu sagen "Schick ne Vote message, hier sind die Infos die du brauchst"

True. Habe das handling in den vote controller verlegt.
Die Input Parameter sind dadurch allerdings lang genug geworden, dass ich ein separates Interface dafür erstellt habe.
4600820889

True. Habe das handling in den vote controller verlegt. Die Input Parameter sind dadurch allerdings lang genug geworden, dass ich ein separates Interface dafür erstellt habe. 4600820889d046972bb264912f0ad929c8950dac
event,
announcementChannel,
pinAfterSending: true
magnetotail marked this conversation as resolved Outdated

Das pinnen sollte glaube ich auch nicht das event übernehmen sondern der Controller

Das pinnen sollte glaube ich auch nicht das event übernehmen sondern der Controller

Evtl halt über nen Parameter bestimmen. Auf lange Sicht gehört das eigentliche verschicken der Message eh in einen eigenen controller aber der voteController kann die Daten für eine voteMessage entgegennehmen die aufbereiten und dann über den messageController die eigentliche message schicken lassen

Evtl halt über nen Parameter bestimmen. Auf lange Sicht gehört das eigentliche verschicken der Message eh in einen eigenen controller aber der voteController kann die Daten für eine voteMessage entgegennehmen die aufbereiten und dann über den messageController die eigentliche message schicken lassen
4600820889d046972bb264912f0ad929c8950dac

gelöst durch das Handling in #54 (comment)
Es gibt noch ein Auftreten vom 'separaten' Pinnen (vote.controller.ts:114). Dort ist ein bisschen mehr refactoring nötig um die Input Paramter zu füllen.
Dieser Kommentar sollte allerdings fertig behandelt sein.

gelöst durch das Handling in https://gitea.brudi.xyz/kenobi/jellyfin-discord-bot/pulls/54#issuecomment-526 Es gibt noch ein Auftreten vom 'separaten' Pinnen (vote.controller.ts:114). Dort ist ein bisschen mehr refactoring nötig um die Input Paramter zu füllen. Dieser Kommentar sollte allerdings fertig behandelt sein.
},
event.guildId,
requestId)
sentMessage.pin()
logger.debug(JSON.stringify(sentMessage))
}
}

View File

@ -5,7 +5,7 @@ import { getMembersWithRoleFromGuild } from "./roleFilter"
import { config } from "../configuration"
import { VoteMessage, isVoteEndedMessage, isVoteMessage } from "./messageIdentifiers"
import { createDateStringFromEvent } from "./dateHelper"
import { Maybe } from "../interfaces"
import { Maybe, voteMessageInputInformation as prepareVoteMessageInput } from "../interfaces"
import format from "date-fns/format"
import toDate from "date-fns/toDate"
import differenceInDays from "date-fns/differenceInDays"
@ -161,6 +161,14 @@ export default class VoteController {
throw Error(`Could not find eventId in Vote Message`)
}
public async prepareAndSendVoteMessage(inputInfo: prepareVoteMessageInput, guildId: string, requestId: string) {
const messageText = this.createVoteMessageText(inputInfo.event.id, inputInfo.startDate, inputInfo.movies, guildId, requestId)
const sentMessage = await this.sendVoteMessage(messageText, inputInfo.movies.length, inputInfo.announcementChannel)
if (inputInfo.pinAfterSending)
sentMessage.pin()
return sentMessage
}
public createVoteMessageText(eventId: string, eventStartDate: Date, movies: string[], guildId: string, requestId: string): string {
let message = `[Abstimmung] für https://discord.com/events/${guildId}/${eventId} \n<@&${config.bot.announcement_role}> Es gibt eine neue Abstimmung für die nächste Watchparty ${createDateStringFromEvent(eventStartDate, guildId, requestId)}! Stimme hierunter für den nächsten Film ab!\n`
magnetotail marked this conversation as resolved Outdated

rename message to messageText

rename message to messageText

done
ca99987a20

done ca99987a20baeceda27cb5e206bff42a54f31b04
@ -171,6 +179,7 @@ export default class VoteController {
return message
}
public async sendVoteMessage(message: string, movieCount: number, announcementChannel: TextChannel) {
const options: MessageCreateOptions = {

View File

@ -1,5 +1,5 @@
import { Collection } from "@discordjs/collection"
import { Role } from "discord.js"
import { GuildScheduledEvent, Role, TextChannel } from "discord.js"
export type Maybe<T> = T | undefined | null
export interface Player {
@ -39,3 +39,10 @@ export interface JellyfinConfig {
collectionUser: string
}
export type PermissionLevel = "VIEWER" | "ADMIN" | "TEMPORARY"
export interface voteMessageInputInformation {
movies: string[],
startDate: Date,
event: GuildScheduledEvent,
announcementChannel: TextChannel,
pinAfterSending: boolean,
}