further handling of automatic user adding/deleting
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
import { Collection, GuildMember } from "discord.js"
|
||||
import { filterRolesFromMemberUpdate } from "../helper/roleFilter"
|
||||
import { filterRolesFromMemberUpdate, getGuildSpecificTriggerRoleId } from "../helper/roleFilter"
|
||||
import { ChangedRoles, PermissionLevel } from "../interfaces"
|
||||
import { jellyfinHandler } from "../.."
|
||||
import { v4 as uuid } from "uuid"
|
||||
@ -18,7 +18,7 @@ export async function execute(oldMember: GuildMember, newMember: GuildMember) {
|
||||
}
|
||||
const removedRoleMatches = changedRoles.removedRoles.find(rRole => rRole.id === key)
|
||||
if (removedRoleMatches) {
|
||||
jellyfinHandler.removeUser(newMember, requestId)
|
||||
jellyfinHandler.removeUser(newMember, level, requestId)
|
||||
}
|
||||
})
|
||||
} catch (error) {
|
||||
@ -26,10 +26,5 @@ export async function execute(oldMember: GuildMember, newMember: GuildMember) {
|
||||
}
|
||||
}
|
||||
|
||||
function getGuildSpecificTriggerRoleId(id: string): Collection<string, PermissionLevel> {
|
||||
const outVal = new Collection<string, PermissionLevel>()
|
||||
outVal.set('1096819983889215659', "VIEWER")
|
||||
outVal.set('1097990848613986526', "ADMIN")
|
||||
return outVal
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,7 +1,8 @@
|
||||
import { GuildScheduledEvent, GuildScheduledEventStatus, Collection, Snowflake, GuildScheduledEventUser} from "discord.js";
|
||||
import { GuildScheduledEvent, GuildScheduledEventStatus, Collection, Snowflake, GuildScheduledEventUser } from "discord.js";
|
||||
import { logger } from "../logger";
|
||||
import { jellyfinHandler } from "../.."
|
||||
import { v4 as uuid } from "uuid";
|
||||
import { getGuildSpecificTriggerRoleId } from "../helper/roleFilter";
|
||||
|
||||
|
||||
export const name = 'guildScheduledEventUpdate'
|
||||
@ -9,32 +10,33 @@ export const name = 'guildScheduledEventUpdate'
|
||||
export async function execute(oldEvent: GuildScheduledEvent, newEvent: GuildScheduledEvent) {
|
||||
try {
|
||||
logger.info(JSON.stringify(newEvent, null, 2))
|
||||
const requestId = uuid()
|
||||
|
||||
if (newEvent.description?.includes("!WP") && [GuildScheduledEventStatus.Active, GuildScheduledEventStatus.Completed].includes(newEvent.status)) {
|
||||
const members = await newEvent.fetchSubscribers({withMember: true})
|
||||
newEvent.guild?.members.fetch
|
||||
if(newEvent.status === GuildScheduledEventStatus.Active)
|
||||
createJFUsers(members, newEvent.name)
|
||||
else
|
||||
deleteJFUsers(members)
|
||||
const roles = getGuildSpecificTriggerRoleId(newEvent.guildId).map((key, value)=> value)
|
||||
const members = (await newEvent.fetchSubscribers({ withMember: true })).filter(member => !member.member.roles.cache.hasAny(...roles))
|
||||
if (newEvent.status === GuildScheduledEventStatus.Active)
|
||||
createJFUsers(members, newEvent.name, requestId)
|
||||
else {
|
||||
members.forEach(member => {
|
||||
member.member.createDM().then(channel => channel.send(`Die Watchparty ist vorbei, dein Account wurde wieder gelöscht. Wenn du einen permanenten Account haben möchtest, melde dich bei Samantha oder Marukus.`))
|
||||
})
|
||||
deleteJFUsers(newEvent.guildId, requestId)
|
||||
}
|
||||
}
|
||||
} catch(error) {
|
||||
} catch (error) {
|
||||
logger.error(error)
|
||||
}
|
||||
}
|
||||
|
||||
async function createJFUsers(members: Collection<Snowflake, GuildScheduledEventUser<true>>, movieName: string) {
|
||||
async function createJFUsers(members: Collection<Snowflake, GuildScheduledEventUser<true>>, movieName: string, requestId?: string) {
|
||||
logger.info(`Creating users for: \n ${JSON.stringify(members, null, 2)}`)
|
||||
members.forEach(member => {
|
||||
member.member.createDM().then(channel => channel.send(`Hey! Du hast dich für die Watchparty von ${movieName} angemeldet! Es geht gleich los!`))
|
||||
jellyfinHandler.upsertUser(member.member, "wird eh nicht genutzt", uuid())
|
||||
jellyfinHandler.upsertUser(member.member, "TEMPORARY", requestId)
|
||||
})
|
||||
}
|
||||
|
||||
async function deleteJFUsers(members: Collection<Snowflake, GuildScheduledEventUser<true>>) {
|
||||
logger.info(`Deleting users for: \n ${JSON.stringify(members, null, 2)}`)
|
||||
members.forEach(member => {
|
||||
member.member.createDM().then(channel => channel.send(`Hey! Da die Watchparty vorbei ist, hab ich deinen Account wieder entfernt. Falls du einen permanenten Account haben möchtest frag bitte Samantha oder Marukus :)`))
|
||||
jellyfinHandler.removeUser(member.member, uuid())
|
||||
})
|
||||
async function deleteJFUsers(guildId: string, requestId?: string) {
|
||||
logger.info(`Watchparty ended, deleting tmp users`)
|
||||
jellyfinHandler.purge(guildId, requestId)
|
||||
}
|
@ -38,7 +38,7 @@ export async function execute(oldState: VoiceState, newState: VoiceState) {
|
||||
logger.info("YO! Da ist jemand dem Channel mit dem Event beigetreten, ich kümmer mich mal um nen Account!")
|
||||
|
||||
newState.member.createDM().then(channel => channel.send(`Hey! Du bist unserer Watchparty beigetreten, ich leg dir mal nen Account an, damit du mitschauen kannst!`))
|
||||
jellyfinHandler.upsertUser(newState.member, "wird eh nicht genutzt", uuid())
|
||||
jellyfinHandler.upsertUser(newState.member, "TEMPORARY", uuid())
|
||||
} else {
|
||||
logger.error("WTF? Expected Member?? When doing things")
|
||||
}
|
||||
|
Reference in New Issue
Block a user