From 6db2a23fc3bb10a42f8b0f092f272555405e4d42 Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Mon, 11 Apr 2022 14:16:23 +0700 Subject: [PATCH] Clean up a little --- Bot/Games/SlotMachine.fs | 102 ++++++++++++++------------------------- 1 file changed, 37 insertions(+), 65 deletions(-) diff --git a/Bot/Games/SlotMachine.fs b/Bot/Games/SlotMachine.fs index c4b95e3..b5c4069 100644 --- a/Bot/Games/SlotMachine.fs +++ b/Bot/Games/SlotMachine.fs @@ -75,17 +75,16 @@ let slotsImages = "./images/sushi.png" |] |> Array.map (fun path -> ( Path.GetFileNameWithoutExtension(path) , File.OpenRead(path) )) -let payTable = [| -|] +let payTable = [| |] let PlayPrice = 10 let twoOfAKindPrize = 100 let threeOfAKindPrize = 1000 -let fourOfAKindPrize = 10000 +let sleepTime = 1000 let spinEmbeds (results : int array) (ctx : IDiscordContext) = async { - let iCtx = ctx.GetInteraction() + let itx = ctx.GetInteraction() let builder = DiscordFollowupMessageBuilder() @@ -96,62 +95,61 @@ let spinEmbeds (results : int array) (ctx : IDiscordContext) = let e2 = DiscordEmbedBuilder().WithImageUrl(slots.[results[1]]) let e3 = DiscordEmbedBuilder().WithImageUrl(slots.[results[2]]) - let! followUp = iCtx.CreateFollowupMessageAsync(builder) |> Async.AwaitTask - do! Async.Sleep 1000 - let! _ = iCtx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().AddEmbeds([ e1.Build() ])) |> Async.AwaitTask - do! Async.Sleep 1000 - let! _ = iCtx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().AddEmbeds([ e1.Build() ; e2.Build() ])) |> Async.AwaitTask - do! Async.Sleep 1000 - let! _ = iCtx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().AddEmbeds([ e1.Build() ; e2.Build() ; e3.Build() ])) |> Async.AwaitTask - do! Async.Sleep 1000 - let! _ = iCtx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().AddEmbeds([ e1.Build() ; e2.Build() ; e3.Build() ])) |> Async.AwaitTask + let! followUp = itx.CreateFollowupMessageAsync(builder) |> Async.AwaitTask + do! Async.Sleep sleepTime + let! _ = itx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().AddEmbeds([ e1.Build() ])) |> Async.AwaitTask + do! Async.Sleep sleepTime + let! _ = itx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().AddEmbeds([ e1.Build() ; e2.Build() ])) |> Async.AwaitTask + do! Async.Sleep sleepTime + let! _ = itx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().AddEmbeds([ e1.Build() ; e2.Build() ; e3.Build() ])) |> Async.AwaitTask + do! Async.Sleep sleepTime + let! _ = itx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().AddEmbeds([ e1.Build() ; e2.Build() ; e3.Build() ])) |> Async.AwaitTask return () } let spinEmojis (results : int array) (ctx : IDiscordContext) = async { - let inter = ctx.GetInteraction() + let itx = ctx.GetInteraction() let emojis = ctx.GetGuild().Emojis |> Seq.map (fun kvp -> kvp.Value) |> Seq.toArray let builder = DiscordFollowupMessageBuilder() builder.Content <- "Spinning!" builder.IsEphemeral <- true - let! followUp = inter.CreateFollowupMessageAsync(builder) |> Async.AwaitTask + let! followUp = itx.CreateFollowupMessageAsync(builder) |> Async.AwaitTask - do! Async.Sleep 1000 + do! Async.Sleep sleepTime let content = $"{Formatter.Emoji(emojis.[results.[0]])}" - let! _ = inter.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().WithContent(content)) |> Async.AwaitTask - do! Async.Sleep 1000 + let! _ = itx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().WithContent(content)) |> Async.AwaitTask + do! Async.Sleep sleepTime let content = $"{Formatter.Emoji(emojis.[results.[0]])}{Formatter.Emoji(emojis.[results.[1]])}" - let! _ = inter.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().WithContent(content)) |> Async.AwaitTask - do! Async.Sleep 1000 + let! _ = itx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().WithContent(content)) |> Async.AwaitTask + do! Async.Sleep sleepTime let content = $"{Formatter.Emoji(emojis.[results.[0]])}{Formatter.Emoji(emojis.[results.[1]])}{Formatter.Emoji(emojis.[results.[2]])}" - let! _ = inter.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().WithContent(content)) |> Async.AwaitTask + let! _ = itx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().WithContent(content)) |> Async.AwaitTask return () } let spinFiles (results : int array) (ctx : IDiscordContext) = async { - let inter = ctx.GetInteraction() - let emojis = ctx.GetGuild().Emojis |> Seq.map (fun kvp -> kvp.Value) |> Seq.toArray + let itx = ctx.GetInteraction() let builder = DiscordFollowupMessageBuilder() builder.Content <- "Spinning!" builder.IsEphemeral <- true - let! followUp = inter.CreateFollowupMessageAsync(builder) |> Async.AwaitTask + let! followUp = itx.CreateFollowupMessageAsync(builder) |> Async.AwaitTask - do! Async.Sleep 1000 + do! Async.Sleep sleepTime let ( name , stream ) = slotsImages.[results.[0]] - let! _ = inter.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder() + let! _ = itx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder() .AddFile(name + "1.png", stream)) |> Async.AwaitTask - do! Async.Sleep 1000 + do! Async.Sleep sleepTime let ( name , stream ) = slotsImages.[results.[1]] - let! _ = inter.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder() + let! _ = itx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder() .AddFile(name + "2.png", stream)) |> Async.AwaitTask - do! Async.Sleep 1000 + do! Async.Sleep sleepTime let ( name , stream ) = slotsImages.[results.[2]] - let! _ = inter.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder() + let! _ = itx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder() .AddFile(name + "3.png", stream)) |> Async.AwaitTask return () } @@ -163,7 +161,6 @@ let spin spinType (ctx : IDiscordContext) = let results = [| random.Next(0, slotCount) ; random.Next(0, slotCount) ; random.Next(0, slotCount) |] let winConditions = (results.[0] = results.[1] && results.[0] = results.[2]) - || (results.[0] <> results.[1] && results.[1] <> results.[2] && results.[0] <> results.[2]) if winConditions then do! DbService.updatePlayerCurrency twoOfAKindPrize player |> Async.Ignore @@ -175,24 +172,17 @@ let spin spinType (ctx : IDiscordContext) = | "Files" -> do! spinFiles results ctx | _ -> () + do! Async.Sleep sleepTime + let builder = DiscordFollowupMessageBuilder() + builder.IsEphemeral <- true let embed4 = DiscordEmbedBuilder() embed4.Title <- "Slot Machine" - embed4.Description <- "You hit the jackpot!" - -// if winConditions then -// do! Async.Sleep sleepTime -// let builder = DiscordFollowupMessageBuilder() -// builder.Content <- "You win 10 GBT!" -// do! ctx.FollowUp(builder) -// |> Async.AwaitTask -// |> Async.Ignore -// else -// do! Async.Sleep sleepTime -// let builder = DiscordFollowupMessageBuilder() -// builder.Content <- "You lose 0.5 GBT! Try your luck again!" -// do! ctx.FollowUp(builder) -// |> Async.AwaitTask -// |> Async.Ignore + if winConditions then + embed4.Description <- $"You win {threeOfAKindPrize} GBT!" + else + builder.Content <- "Better luck next time! You paid 1 $GBT" + builder.AddEmbed(embed4) |> ignore + do! ctx.FollowUp(builder) |> Async.AwaitTask |> Async.Ignore return () }) @@ -231,21 +221,3 @@ let sendInitialEmbed (ctx : IDiscordContext) = with e -> printfn $"Error trying to get channel Training Dojo\n\n{e.Message}" } |> Async.RunSynchronously - -//type SlotMachine() = -// inherit ApplicationCommandModule () -// -// let enforceChannel (ctx : IDiscordContext) (spinFn : IDiscordContext -> Task) = -// match ctx.GetChannel().Id with -// | id when id = GuildEnvironment.channelSlots -> spinFn ctx -// | _ -> -// task { -// let msg = $"You must go to <#{GuildEnvironment.channelSlots}> channel to play the slots!" -// do! Messaging.sendSimpleResponse ctx msg -// } -// -// [] -// member this.Spin (ctx : InteractionContext) = enforceChannel (DiscordInteractionContext ctx) spinCommand -// -// [] -// member this.SpinSimple (ctx : InteractionContext) = enforceChannel (DiscordInteractionContext ctx) spin