Enforce role and channel

This commit is contained in:
Joseph Ferano 2022-05-18 00:10:36 +07:00
parent 7fd3100790
commit a9e00c0436

View File

@ -445,7 +445,7 @@ let handleGuildMemberAdded _ (eventArgs : GuildMemberAddEventArgs) =
do! processNewUser eventArgs do! processNewUser eventArgs
} :> Task } :> Task
let submitWhitelist (ctx : IDiscordContext) (address : string) = let submitWhitelist (address : string) (ctx : IDiscordContext) =
task { task {
// BtshZ7oNB5tk5pVbDpsRCziZ1qwV7SMCJq1Pe3YbHZuo // BtshZ7oNB5tk5pVbDpsRCziZ1qwV7SMCJq1Pe3YbHZuo
let pubkey = PublicKey(address) let pubkey = PublicKey(address)
@ -473,9 +473,23 @@ Keep an eye on <#{GuildEnvironment.channelAnnouncements}> for updates.
type Inviter() = type Inviter() =
inherit ApplicationCommandModule () inherit ApplicationCommandModule ()
let enforceChannel (ctx : IDiscordContext) (fn : IDiscordContext -> Task) =
match ctx.GetChannel().Id with
| id when id = GuildEnvironment.channelSubmitWallet -> fn ctx
| _ ->
task {
let msg = $"You must go to <#{GuildEnvironment.channelSubmitWallet}> channel to submit your wallet"
do! Messaging.sendSimpleResponse ctx msg
}
[<SlashCommand("submit", "Submit your public wallet address")>] [<SlashCommand("submit", "Submit your public wallet address")>]
member this.SubmitAddress (ctx : InteractionContext, [<Option("address", "Wallet address")>] address : string) = member this.SubmitAddress (ctx : InteractionContext, [<Option("address", "Wallet address")>] address : string) =
submitWhitelist (DiscordInteractionContext ctx) address if ctx.Member.Roles |> Seq.exists (fun role -> role.Id = GuildEnvironment.roleWhitelist || role.Id = GuildEnvironment.roleWhiteOG) then
enforceChannel (DiscordInteractionContext ctx) (submitWhitelist address)
else
let msg = $"You currently are not Whitelisted, go to <#{GuildEnvironment.channelWhitelist}> to purchase the role!"
Messaging.sendSimpleResponse (DiscordInteractionContext ctx) msg
|> Async.StartAsTask :> Task
// [<SlashCommand("recruited", "Get total invites from a specific user")>] // [<SlashCommand("recruited", "Get total invites from a specific user")>]
// member this.ListInvitedPeople (ctx : InteractionContext) = // member this.ListInvitedPeople (ctx : InteractionContext) =