type KindName<Ctx> = Ctx extends Ungateable
? "autocomplete"
: Ctx extends InteractionGateContext<infer R>
? R extends ChatInputCommandInteraction
? "Slash"
: R extends MessageContextMenuCommandInteraction
? "MessageContextMenu"
: R extends UserContextMenuCommandInteraction
? "UserContextMenu"
: R extends StringSelectMenuInteraction
? "StringMenu"
: R extends UserSelectMenuInteraction
? "UserMenu"
: R extends RoleSelectMenuInteraction
? "RoleMenu"
: R extends ChannelSelectMenuInteraction
? "ChannelMenu"
: R extends MentionableSelectMenuInteraction
? "MentionableMenu"
: R extends ButtonInteraction
? "Button"
: R extends ModalSubmitInteraction
? "Modal"
: "an interaction"
: Ctx extends EventGateContext<infer N>
? `${N & string} event`
: "an agnostic";Ctx
Ctx