import { Message, MessageReaction, User } from "discord.js" import { client } from "../.." import { NONE_OF_THAT } from "../constants" import { logger } from "../logger" import { getMembersWithRoleFromGuild } from "./roleFilter" import { config } from "../configuration" export default class VoteController { public async handleNoneOfThatVote(messageReaction: MessageReaction, user: User, reactedUponMessage: Message, requestId: string, guildId: string) { if (!messageReaction.message.guild) return 'No guild' logger.debug(`${reactedUponMessage.id} is vote message`, { requestId, guildId }) const watcherRoleMember = await getMembersWithRoleFromGuild(config.bot.announcement_role, messageReaction.message.guild) logger.info("ROLE MEMBERS " + JSON.stringify(watcherRoleMember), { requestId, guildId }) const watcherRoleMemberCount = watcherRoleMember.size logger.info(`MEMBER COUNT: ${watcherRoleMemberCount}`, { requestId, guildId }) const noneOfThatReactions = messageReaction.message.reactions.cache.get(NONE_OF_THAT)?.users.cache.filter(x => x.id !== client.user?.id).size ?? 0 const memberThreshold = (watcherRoleMemberCount / 2) logger.info(`Reroll ${noneOfThatReactions} > ${memberThreshold} ?`, { requestId, guildId }) if (noneOfThatReactions > memberThreshold) { logger.info('Starting poll reroll', { requestId, guildId }) messageReaction.message.edit((messageReaction.message.content ?? "").concat('\nDiese Abstimmung muss wiederholt werden.')) } logger.info(`No reroll`, { requestId, guildId }) } }