44 lines
1.7 KiB
Forth
44 lines
1.7 KiB
Forth
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<GBT>
|
|
let ShieldPrize = 5<GBT>
|
|
|
|
let executePlayerInteraction (ctx : InteractionContext) (dispatch : PlayerData -> Async<unit>) =
|
|
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<unit>) =
|
|
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
|
|
|