restrict announcements to admins
This commit is contained in:
		@@ -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!")
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
})
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user