module Degenz.Game open System open System.Threading.Tasks open DSharpPlus open DSharpPlus.Entities open DSharpPlus.EventArgs open DSharpPlus.SlashCommands open Degenz.DbService open Microsoft.VisualBasic let HackPrize = 10 let ShieldPrize = 5 let executePlayerInteraction (ctx : InteractionContext) (dispatch : PlayerData -> Async) = async { let builder = DiscordInteractionResponseBuilder() builder.IsEphemeral <- true builder.Content <- "Content" do! ctx.CreateResponseAsync(InteractionResponseType.DeferredChannelMessageWithSource, builder) |> Async.AwaitTask let! playerResult = tryFindPlayer ctx.Member.Id match playerResult with | Some player -> do! dispatch player | None -> do! Messaging.sendSimpleResponse ctx "You are currently not a hacker, first use the /redpill command to become one" } |> Async.StartAsTask :> Task // TODO: Create an abstraction for these two helper functions let executePlayerEvent (event : ComponentInteractionCreateEventArgs) (dispatch : PlayerData -> Async) = async { let builder = DiscordInteractionResponseBuilder() builder.IsEphemeral <- true builder.Content <- "Content" do! event.Interaction.CreateResponseAsync(InteractionResponseType.DeferredChannelMessageWithSource, builder) |> Async.AwaitTask let! playerResult = tryFindPlayer event.User.Id match playerResult with | Some player -> do! dispatch player | None -> do! Messaging.sendInteractionEvent event "You are currently not a hacker, first use the /redpill command to become one" } |> Async.StartAsTask :> Task