module Degenz.Admin open System.Threading.Tasks open DSharpPlus.Entities open DSharpPlus.SlashCommands open Degenz.Messaging type AdminBot() = inherit ApplicationCommandModule () let enforceAdmin (ctx : IDiscordContext) (adminFn : IDiscordContext -> Task) = let isAdmin = Seq.exists (fun (role : DiscordRole) -> role.Id = GuildEnvironment.roleAdmin) (ctx.GetDiscordMember().Roles) if isAdmin then adminFn ctx else Messaging.sendSimpleResponse ctx $"You are not admin" |> Async.StartAsTask :> Task [] member this.GetAttributions (ctx : InteractionContext, [] user : DiscordUser) = enforceAdmin (DiscordInteractionContext ctx) (InviteTracker.getAttributions user.Id) [] member this.SetStock (ctx : InteractionContext, [] amount : int64) = enforceAdmin (DiscordInteractionContext ctx) (InviteTracker.setWhitelistStock (int amount))