Clean up a little

This commit is contained in:
Joseph Ferano 2022-04-11 14:16:23 +07:00
parent 0b5ada0e90
commit 6db2a23fc3

View File

@ -75,17 +75,16 @@ let slotsImages =
"./images/sushi.png" |] "./images/sushi.png" |]
|> Array.map (fun path -> ( Path.GetFileNameWithoutExtension(path) , File.OpenRead(path) )) |> Array.map (fun path -> ( Path.GetFileNameWithoutExtension(path) , File.OpenRead(path) ))
let payTable = [| let payTable = [| |]
|]
let PlayPrice = 10<GBT> let PlayPrice = 10<GBT>
let twoOfAKindPrize = 100<GBT> let twoOfAKindPrize = 100<GBT>
let threeOfAKindPrize = 1000<GBT> let threeOfAKindPrize = 1000<GBT>
let fourOfAKindPrize = 10000<GBT> let sleepTime = 1000
let spinEmbeds (results : int array) (ctx : IDiscordContext) = let spinEmbeds (results : int array) (ctx : IDiscordContext) =
async { async {
let iCtx = ctx.GetInteraction() let itx = ctx.GetInteraction()
let builder = DiscordFollowupMessageBuilder() let builder = DiscordFollowupMessageBuilder()
@ -96,62 +95,61 @@ let spinEmbeds (results : int array) (ctx : IDiscordContext) =
let e2 = DiscordEmbedBuilder().WithImageUrl(slots.[results[1]]) let e2 = DiscordEmbedBuilder().WithImageUrl(slots.[results[1]])
let e3 = DiscordEmbedBuilder().WithImageUrl(slots.[results[2]]) let e3 = DiscordEmbedBuilder().WithImageUrl(slots.[results[2]])
let! followUp = iCtx.CreateFollowupMessageAsync(builder) |> Async.AwaitTask let! followUp = itx.CreateFollowupMessageAsync(builder) |> Async.AwaitTask
do! Async.Sleep 1000 do! Async.Sleep sleepTime
let! _ = iCtx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().AddEmbeds([ e1.Build() ])) |> Async.AwaitTask let! _ = itx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().AddEmbeds([ e1.Build() ])) |> Async.AwaitTask
do! Async.Sleep 1000 do! Async.Sleep sleepTime
let! _ = iCtx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().AddEmbeds([ e1.Build() ; e2.Build() ])) |> Async.AwaitTask let! _ = itx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().AddEmbeds([ e1.Build() ; e2.Build() ])) |> Async.AwaitTask
do! Async.Sleep 1000 do! Async.Sleep sleepTime
let! _ = iCtx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().AddEmbeds([ e1.Build() ; e2.Build() ; e3.Build() ])) |> Async.AwaitTask let! _ = itx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().AddEmbeds([ e1.Build() ; e2.Build() ; e3.Build() ])) |> Async.AwaitTask
do! Async.Sleep 1000 do! Async.Sleep sleepTime
let! _ = iCtx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().AddEmbeds([ e1.Build() ; e2.Build() ; e3.Build() ])) |> Async.AwaitTask let! _ = itx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().AddEmbeds([ e1.Build() ; e2.Build() ; e3.Build() ])) |> Async.AwaitTask
return () return ()
} }
let spinEmojis (results : int array) (ctx : IDiscordContext) = let spinEmojis (results : int array) (ctx : IDiscordContext) =
async { async {
let inter = ctx.GetInteraction() let itx = ctx.GetInteraction()
let emojis = ctx.GetGuild().Emojis |> Seq.map (fun kvp -> kvp.Value) |> Seq.toArray let emojis = ctx.GetGuild().Emojis |> Seq.map (fun kvp -> kvp.Value) |> Seq.toArray
let builder = DiscordFollowupMessageBuilder() let builder = DiscordFollowupMessageBuilder()
builder.Content <- "Spinning!" builder.Content <- "Spinning!"
builder.IsEphemeral <- true 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 content = $"{Formatter.Emoji(emojis.[results.[0]])}"
let! _ = inter.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().WithContent(content)) |> Async.AwaitTask let! _ = itx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().WithContent(content)) |> Async.AwaitTask
do! Async.Sleep 1000 do! Async.Sleep sleepTime
let content = $"{Formatter.Emoji(emojis.[results.[0]])}{Formatter.Emoji(emojis.[results.[1]])}" let content = $"{Formatter.Emoji(emojis.[results.[0]])}{Formatter.Emoji(emojis.[results.[1]])}"
let! _ = inter.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().WithContent(content)) |> Async.AwaitTask let! _ = itx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder().WithContent(content)) |> Async.AwaitTask
do! Async.Sleep 1000 do! Async.Sleep sleepTime
let content = $"{Formatter.Emoji(emojis.[results.[0]])}{Formatter.Emoji(emojis.[results.[1]])}{Formatter.Emoji(emojis.[results.[2]])}" 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 () return ()
} }
let spinFiles (results : int array) (ctx : IDiscordContext) = let spinFiles (results : int array) (ctx : IDiscordContext) =
async { 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() let builder = DiscordFollowupMessageBuilder()
builder.Content <- "Spinning!" builder.Content <- "Spinning!"
builder.IsEphemeral <- true 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 ( name , stream ) = slotsImages.[results.[0]]
let! _ = inter.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder() let! _ = itx.EditFollowupMessageAsync(followUp.Id, DiscordWebhookBuilder()
.AddFile(name + "1.png", stream)) |> Async.AwaitTask .AddFile(name + "1.png", stream)) |> Async.AwaitTask
do! Async.Sleep 1000 do! Async.Sleep sleepTime
let ( name , stream ) = slotsImages.[results.[1]] 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 .AddFile(name + "2.png", stream)) |> Async.AwaitTask
do! Async.Sleep 1000 do! Async.Sleep sleepTime
let ( name , stream ) = slotsImages.[results.[2]] 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 .AddFile(name + "3.png", stream)) |> Async.AwaitTask
return () 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 results = [| random.Next(0, slotCount) ; random.Next(0, slotCount) ; random.Next(0, slotCount) |]
let winConditions = (results.[0] = results.[1] && results.[0] = results.[2]) let winConditions = (results.[0] = results.[1] && results.[0] = results.[2])
|| (results.[0] <> results.[1] && results.[1] <> results.[2] && results.[0] <> results.[2])
if winConditions if winConditions
then do! DbService.updatePlayerCurrency twoOfAKindPrize player |> Async.Ignore then do! DbService.updatePlayerCurrency twoOfAKindPrize player |> Async.Ignore
@ -175,24 +172,17 @@ let spin spinType (ctx : IDiscordContext) =
| "Files" -> do! spinFiles results ctx | "Files" -> do! spinFiles results ctx
| _ -> () | _ -> ()
do! Async.Sleep sleepTime
let builder = DiscordFollowupMessageBuilder()
builder.IsEphemeral <- true
let embed4 = DiscordEmbedBuilder() let embed4 = DiscordEmbedBuilder()
embed4.Title <- "Slot Machine" embed4.Title <- "Slot Machine"
embed4.Description <- "You hit the jackpot!" if winConditions then
embed4.Description <- $"You win {threeOfAKindPrize} GBT!"
// if winConditions then else
// do! Async.Sleep sleepTime builder.Content <- "Better luck next time! You paid 1 $GBT"
// let builder = DiscordFollowupMessageBuilder() builder.AddEmbed(embed4) |> ignore
// builder.Content <- "You win 10 GBT!" do! ctx.FollowUp(builder) |> Async.AwaitTask |> Async.Ignore
// 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
return () return ()
}) })
@ -231,21 +221,3 @@ let sendInitialEmbed (ctx : IDiscordContext) =
with e -> with e ->
printfn $"Error trying to get channel Training Dojo\n\n{e.Message}" printfn $"Error trying to get channel Training Dojo\n\n{e.Message}"
} |> Async.RunSynchronously } |> 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
// }
//
// [<SlashCommand("spin", "Want to try your luck?")>]
// member this.Spin (ctx : InteractionContext) = enforceChannel (DiscordInteractionContext ctx) spinCommand
//
// [<SlashCommand("spin-simple", "Want to try your luck?")>]
// member this.SpinSimple (ctx : InteractionContext) = enforceChannel (DiscordInteractionContext ctx) spin