restrict announcements to admins

This commit is contained in:
Sammy 2023-06-12 22:34:39 +02:00
parent e50cb10c5b
commit a2c55ad676

View File

@ -1,4 +1,4 @@
import { Guild, GuildScheduledEvent, GuildScheduledEventEditOptions, GuildScheduledEventSetStatusArg, GuildScheduledEventStatus, Message, MessageCreateOptions, MessageEditOptions, TextChannel, messageLink } from 'discord.js' import { Guild, GuildMember, GuildScheduledEvent, GuildScheduledEventEditOptions, GuildScheduledEventSetStatusArg, GuildScheduledEventStatus, Message, MessageCreateOptions, MessageEditOptions, TextChannel, messageLink } from 'discord.js'
import { v4 as uuid } from 'uuid' import { v4 as uuid } from 'uuid'
import { config } from '../configuration' import { config } from '../configuration'
import { Emotes } from '../events/guildScheduledEventCreate' import { Emotes } from '../events/guildScheduledEventCreate'
@ -16,6 +16,24 @@ export default new Command({
const requestId = uuid() const requestId = uuid()
const guildId = command.guildId! const guildId = command.guildId!
logger.info("Got command for announcing!", { guildId, requestId }) logger.info("Got command for announcing!", { guildId, requestId })
if (!isAdmin(command.member)) {
logger.info(`Announcement was requested by ${command.member.displayName} but they are not an admin! Not sending announcement.`, { guildId, requestId })
return
} else {
logger.info(`User ${command.member.displayName} seems to be admin`)
}
sendAnnouncement(guildId, requestId)
command.followUp("Ist rausgeschickt!")
}
})
function isAdmin(member: GuildMember): boolean {
return member.roles.cache.find((role, _) => role.id === config.bot.jf_admin_role) != undefined
}
async function sendAnnouncement(guildId: string, requestId: string): Promise<void> {
logger.info("Sending announcement")
const announcementChannel: TextChannel = client.getAnnouncementChannelForGuild(guildId) const announcementChannel: TextChannel = client.getAnnouncementChannelForGuild(guildId)
const body = `Hey! @everyone! Hier ist der Watchparty Bot vom Hartzarett. const body = `Hey! @everyone! Hier ist der Watchparty Bot vom Hartzarett.
@ -28,11 +46,6 @@ Für eine Erklärung wie das alles funktioniert mach einfach /mitgucken für ein
allowedMentions: { parse: ['everyone'] }, allowedMentions: { parse: ['everyone'] },
content: body content: body
} }
const message: Message<true> = await announcementChannel.send(options) const message: Message<true> = await announcementChannel.send(options)
message.react("🎫") message.react("🎫")
command.followUp("Ist rausgeschickt!")
} }
})