Enforce channel

This commit is contained in:
Joseph Ferano 2022-02-07 22:14:22 +07:00
parent dcf0bdb174
commit 0e3909d4f2

View File

@ -59,7 +59,7 @@ let arsenal (ctx : InteractionContext) =
do! DbService.updatePlayer updatedPlayer do! DbService.updatePlayer updatedPlayer
}) })
let buy (ctx : InteractionContext) itemType = let buy itemType (ctx : InteractionContext) =
Game.executePlayerInteraction ctx (fun player -> async { Game.executePlayerInteraction ctx (fun player -> async {
let itemStore = Embeds.getBuyItemsEmbed itemType Armory.battleItems let itemStore = Embeds.getBuyItemsEmbed itemType Armory.battleItems
do! ctx.Interaction.CreateFollowupMessageAsync(itemStore) do! ctx.Interaction.CreateFollowupMessageAsync(itemStore)
@ -68,7 +68,7 @@ let buy (ctx : InteractionContext) itemType =
}) })
// TODO: Remove active shield when selling // TODO: Remove active shield when selling
let sell (ctx : InteractionContext) itemType = let sell itemType (ctx : InteractionContext) =
Game.executePlayerInteraction ctx (fun player -> async { Game.executePlayerInteraction ctx (fun player -> async {
match checkHasItemsInArsenal itemType player with match checkHasItemsInArsenal itemType player with
| Ok _ -> | Ok _ ->
@ -124,18 +124,28 @@ let handleStoreEvents (_ : DiscordClient) (event : ComponentInteractionCreateEve
type Store() = type Store() =
inherit ApplicationCommandModule () inherit ApplicationCommandModule ()
let enforceChannel (ctx : InteractionContext) (storeFn : InteractionContext -> Task) =
match ctx.Channel.Id with
| id when id = GuildEnvironment.channelArmory ->
storeFn ctx
| _ ->
task {
let msg = $"You must go to <#{GuildEnvironment.channelArmory}> channel to buy/sell or check your arsenal"
do! Messaging.sendSimpleResponse ctx msg
}
[<SlashCommand("arsenal", "Get the Hacks and Shields you own, and which ones are active")>] [<SlashCommand("arsenal", "Get the Hacks and Shields you own, and which ones are active")>]
member this.Arsenal (ctx : InteractionContext) = arsenal ctx member this.Arsenal (ctx : InteractionContext) = enforceChannel ctx arsenal
[<SlashCommand("buy-hack", "Purchase a hack attack you can use to earn GoodBoyTokenz")>] [<SlashCommand("buy-hack", "Purchase a hack attack you can use to earn GoodBoyTokenz")>]
member _.BuyHack (ctx : InteractionContext) = buy ctx ItemType.Hack member _.BuyHack (ctx : InteractionContext) = enforceChannel ctx (buy ItemType.Hack)
[<SlashCommand("buy-shield", "Purchase a hack shield so you can protect your GoodBoyTokenz")>] [<SlashCommand("buy-shield", "Purchase a hack shield so you can protect your GoodBoyTokenz")>]
member this.BuyShield (ctx : InteractionContext) = buy ctx ItemType.Shield member this.BuyShield (ctx : InteractionContext) = enforceChannel ctx (buy ItemType.Shield)
[<SlashCommand("sell-hack", "Sell a hack for GoodBoyTokenz")>] [<SlashCommand("sell-hack", "Sell a hack for GoodBoyTokenz")>]
member this.SellHack (ctx : InteractionContext) = sell ctx ItemType.Hack member this.SellHack (ctx : InteractionContext) = enforceChannel ctx (sell ItemType.Hack)
[<SlashCommand("sell-shield", "Sell a shield for GoodBoyTokenz")>] [<SlashCommand("sell-shield", "Sell a shield for GoodBoyTokenz")>]
member this.SellShield (ctx : InteractionContext) = sell ctx ItemType.Shield member this.SellShield (ctx : InteractionContext) = enforceChannel ctx (sell ItemType.Shield)