Analytics, several fixes
This commit is contained in:
parent
937eeb4cc2
commit
310699ea50
@ -150,3 +150,18 @@ let shieldActivated (discordMember : DiscordMember) shieldName =
|
|||||||
"shield_name" , shieldName
|
"shield_name" , shieldName
|
||||||
]
|
]
|
||||||
track "Shield Button Clicked" discordMember.Id data
|
track "Shield Button Clicked" discordMember.Id data
|
||||||
|
|
||||||
|
let prizeTableViewed (discordMember : DiscordMember) =
|
||||||
|
let data = [
|
||||||
|
"user_display_name" , discordMember.Username
|
||||||
|
]
|
||||||
|
track "Shield Button Clicked" discordMember.Id data
|
||||||
|
|
||||||
|
let slotPlayed (discordMember : DiscordMember) amount result prize =
|
||||||
|
let data = [
|
||||||
|
"user_display_name" , discordMember.Username
|
||||||
|
"play_amount" , string amount
|
||||||
|
"result" , string result
|
||||||
|
"prize" , string result
|
||||||
|
]
|
||||||
|
track "Shield Button Clicked" discordMember.Id data
|
||||||
|
@ -136,12 +136,14 @@ let sleepTime = 1500
|
|||||||
let mutable guildEmojis : Map<string, DiscordEmoji> option = None
|
let mutable guildEmojis : Map<string, DiscordEmoji> option = None
|
||||||
let mutable anyEmoji : DiscordEmoji option = None
|
let mutable anyEmoji : DiscordEmoji option = None
|
||||||
|
|
||||||
let embedButtons =
|
let embedButtons includePrizeTable =
|
||||||
let button1 = DiscordButtonComponent(ButtonStyle.Success, $"spin-1x", $"Spin 1x - {PlayPricex1} $GBT") :> DiscordComponent
|
let button1 = DiscordButtonComponent(ButtonStyle.Success, $"spin-1x", $"Bet 1x - {PlayPricex1} $GBT") :> DiscordComponent
|
||||||
let button2 = DiscordButtonComponent(ButtonStyle.Success, $"spin-2x", $"Spin 2x - {PlayPricex2} $GBT") :> DiscordComponent
|
let button2 = DiscordButtonComponent(ButtonStyle.Success, $"spin-2x", $"Bet 2x - {PlayPricex2} $GBT") :> DiscordComponent
|
||||||
let button3 = DiscordButtonComponent(ButtonStyle.Success, $"spin-3x", $"Spin 3x - {PlayPricex3} $GBT") :> DiscordComponent
|
let button3 = DiscordButtonComponent(ButtonStyle.Success, $"spin-3x", $"Bet 3x - {PlayPricex3} $GBT") :> DiscordComponent
|
||||||
let button4 = DiscordButtonComponent(ButtonStyle.Primary, $"prizes", $"Show Prizes") :> DiscordComponent
|
let button4 = DiscordButtonComponent(ButtonStyle.Primary, $"prizes", $"Show Prizes") :> DiscordComponent
|
||||||
[| button1 ; button2 ; button3 ; button4 |]
|
if includePrizeTable
|
||||||
|
then [| button1 ; button2 ; button3 ; button4 |]
|
||||||
|
else [| button1 ; button2 ; button3 |]
|
||||||
|
|
||||||
let getJackpotAmount () =
|
let getJackpotAmount () =
|
||||||
GuildEnvironment.connectionString
|
GuildEnvironment.connectionString
|
||||||
@ -177,7 +179,7 @@ let handlePrizeTable (ctx : IDiscordContext) =
|
|||||||
let prizeTxt =
|
let prizeTxt =
|
||||||
match prize with
|
match prize with
|
||||||
| Money m -> $"**{m}** $GBT"
|
| Money m -> $"**{m}** $GBT"
|
||||||
| Jackpot -> $"**🎉JACKPOT🎉**"
|
| Jackpot -> $"**JACKPOT**"
|
||||||
let line =
|
let line =
|
||||||
match s1 , s2 , s3 with
|
match s1 , s2 , s3 with
|
||||||
| Symbol s1' , Symbol s2' , Symbol s3' ->
|
| Symbol s1' , Symbol s2' , Symbol s3' ->
|
||||||
@ -193,9 +195,8 @@ let handlePrizeTable (ctx : IDiscordContext) =
|
|||||||
embed.Color <- DiscordColor.Green
|
embed.Color <- DiscordColor.Green
|
||||||
embed.Title <- "Degenz Slots Prize Table"
|
embed.Title <- "Degenz Slots Prize Table"
|
||||||
embed.Description <- $"Current Jackpot At: **{jackpot}** $GBT\n\n**Combo** ⠀⠀⠀⠀⠀⠀⠀ **Prize**\n{rows}"
|
embed.Description <- $"Current Jackpot At: **{jackpot}** $GBT\n\n**Combo** ⠀⠀⠀⠀⠀⠀⠀ **Prize**\n{rows}"
|
||||||
let builder = DiscordFollowupMessageBuilder()
|
do! ctx.FollowUp(DiscordFollowupMessageBuilder().AsEphemeral().AddEmbed(embed))
|
||||||
builder.IsEphemeral <- true
|
do! Analytics.prizeTableViewed (ctx.GetDiscordMember())
|
||||||
do! ctx.FollowUp(builder.AddEmbed(embed))
|
|
||||||
| _ , _ -> return ()
|
| _ , _ -> return ()
|
||||||
} :> Task
|
} :> Task
|
||||||
|
|
||||||
@ -225,7 +226,12 @@ let spinEmojis (builder : DiscordFollowupMessageBuilder) (results : SlotSymbol a
|
|||||||
}
|
}
|
||||||
|
|
||||||
let spin multiplier (ctx : IDiscordContext) =
|
let spin multiplier (ctx : IDiscordContext) =
|
||||||
PlayerInteractions.executePlayerAction ctx (fun player -> async {
|
let playAmount =
|
||||||
|
match multiplier with
|
||||||
|
| 1 -> PlayPricex1
|
||||||
|
| 2 -> PlayPricex2
|
||||||
|
| _ -> PlayPricex3
|
||||||
|
let execute player = async {
|
||||||
let random = Random(Guid.NewGuid().GetHashCode())
|
let random = Random(Guid.NewGuid().GetHashCode())
|
||||||
let symbols = [| reel1.[random.Next(0, reel1.Length)] ; reel2.[random.Next(0, reel2.Length)] ; reel3.[random.Next(0, reel3.Length)] |]
|
let symbols = [| reel1.[random.Next(0, reel1.Length)] ; reel2.[random.Next(0, reel2.Length)] ; reel3.[random.Next(0, reel3.Length)] |]
|
||||||
|
|
||||||
@ -253,49 +259,49 @@ let spin multiplier (ctx : IDiscordContext) =
|
|||||||
let addGBTField (embed : DiscordEmbedBuilder) prize =
|
let addGBTField (embed : DiscordEmbedBuilder) prize =
|
||||||
let sym = if prize > 0<GBT> then "+" else "-"
|
let sym = if prize > 0<GBT> then "+" else "-"
|
||||||
embed.AddField("New 💰$GBT Balance", $"`💰` {player.Bank} ⋙ `💰` {player.Bank + prize} `({sym}{abs prize} $GBT)`") |> ignore
|
embed.AddField("New 💰$GBT Balance", $"`💰` {player.Bank} ⋙ `💰` {player.Bank + prize} `({sym}{abs prize} $GBT)`") |> ignore
|
||||||
match prize with
|
let! result , prizeAmount = async {
|
||||||
| Some (Money amount) ->
|
match prize with
|
||||||
let prizeWithMultiplier = amount * multiplier
|
| Some (Money amount) ->
|
||||||
do! DbService.updatePlayerCurrency prizeWithMultiplier player |> Async.Ignore
|
let prizeWithMultiplier = amount * multiplier
|
||||||
embed.ImageUrl <- "https://s7.gifyu.com/images/youwin.png"
|
do! DbService.updatePlayerCurrency prizeWithMultiplier player |> Async.Ignore
|
||||||
embed.Color <- DiscordColor.Green
|
embed.Color <- DiscordColor.Green
|
||||||
embed.Color <- DiscordColor.Purple
|
embed.Description <- $"You win **{prizeWithMultiplier}** GBT!"
|
||||||
embed.Description <- $"You win **{prizeWithMultiplier}** GBT!"
|
embed.AddField("Result", $"{slotsContent}", true) |> ignore
|
||||||
embed.AddField("Result", $"{slotsContent}", true) |> ignore
|
addGBTField embed prizeWithMultiplier
|
||||||
addGBTField embed prizeWithMultiplier
|
return "WON" , prizeWithMultiplier
|
||||||
| Some (Jackpot) ->
|
| Some (Jackpot) ->
|
||||||
let! jackpot = getJackpotAmount ()
|
let! jackpot = getJackpotAmount ()
|
||||||
embed.ImageUrl <- "https://s7.gifyu.com/images/jackpot2ac30c9823f6a91c.png"
|
embed.Color <- DiscordColor.Purple
|
||||||
embed.Color <- DiscordColor.Purple
|
embed.Description <- $"YOU HIT THE JACKPOT!!!"
|
||||||
embed.Description <- $"YOU HIT THE JACKPOT!!!"
|
embed.AddField("Result", $"{slotsContent}", true) |> ignore
|
||||||
embed.AddField("Result", $"{slotsContent}", true) |> ignore
|
addGBTField embed jackpot
|
||||||
addGBTField embed jackpot
|
do! DbService.updatePlayerCurrency jackpot player |> Async.Ignore
|
||||||
do! resetJackpot BaseJackpotAmount |> Async.Ignore
|
do! resetJackpot BaseJackpotAmount |> Async.Ignore
|
||||||
| None ->
|
return "JACKPOT" , jackpot
|
||||||
let playAmount =
|
| None ->
|
||||||
match multiplier with
|
do! DbService.updatePlayerCurrency -playAmount player |> Async.Ignore
|
||||||
| 1 -> PlayPricex1
|
do! incrementJackpot playAmount |> Async.Ignore
|
||||||
| 2 -> PlayPricex2
|
let! jackpot = getJackpotAmount ()
|
||||||
| _ -> PlayPricex3
|
embed.Description <- $"Better luck next time! You paid {playAmount} $GBT"
|
||||||
// TODO: We have to make sure we don't go below zero
|
embed.Color <- DiscordColor.Red
|
||||||
do! DbService.updatePlayerCurrency -playAmount player |> Async.Ignore
|
embed.AddField("New JACKPOT", $"`💰` {jackpot} `$GBT`", true) |> ignore
|
||||||
do! incrementJackpot playAmount |> Async.Ignore
|
embed.AddField("Result", $"{slotsContent}", true) |> ignore
|
||||||
let! jackpot = getJackpotAmount ()
|
addGBTField embed -playAmount
|
||||||
embed.Description <- $"Better luck next time! You paid {playAmount} $GBT"
|
return "LOST" , 0<GBT>
|
||||||
embed.Color <- DiscordColor.Red
|
}
|
||||||
embed.AddField("New 🎉JACKPOT🎉", $"`💰` {jackpot} `$GBT`", true) |> ignore
|
|
||||||
embed.AddField("Result", $"{slotsContent}", true) |> ignore
|
|
||||||
addGBTField embed -playAmount
|
|
||||||
let dwb = DiscordWebhookBuilder()
|
let dwb = DiscordWebhookBuilder()
|
||||||
dwb.AddComponents(embedButtons).AddEmbed(embed).WithContent(slotsContent) |> ignore
|
dwb.AddComponents(embedButtons false).AddEmbed(embed).WithContent(slotsContent) |> ignore
|
||||||
do! itx.EditFollowupMessageAsync(followUpMessage.Id, dwb) |> Async.AwaitTask |> Async.Ignore
|
do! itx.EditFollowupMessageAsync(followUpMessage.Id, dwb) |> Async.AwaitTask |> Async.Ignore
|
||||||
|
do! Analytics.slotPlayed (ctx.GetDiscordMember()) playAmount result prizeAmount
|
||||||
return ()
|
}
|
||||||
})
|
PlayerInteractions.executePlayerAction ctx (fun player ->
|
||||||
|
if player.Bank > playAmount then
|
||||||
|
execute player
|
||||||
|
else
|
||||||
|
Messaging.sendFollowUpMessage ctx "You do not have sufficient funds to play")
|
||||||
|
|
||||||
let handleButton (_ : DiscordClient) (event : ComponentInteractionCreateEventArgs) =
|
let handleButton (_ : DiscordClient) (event : ComponentInteractionCreateEventArgs) =
|
||||||
let ctx = DiscordEventContext event
|
let ctx = DiscordEventContext event
|
||||||
// TODO: We have to make sure the player has enough money
|
|
||||||
match event.Id with
|
match event.Id with
|
||||||
| "spin-1x" -> spin 1 ctx
|
| "spin-1x" -> spin 1 ctx
|
||||||
| "spin-2x" -> spin 2 ctx
|
| "spin-2x" -> spin 2 ctx
|
||||||
@ -335,7 +341,7 @@ let sendInitialEmbed (ctx : IDiscordContext) =
|
|||||||
|
|
||||||
builder.AddEmbed(embed) |> ignore
|
builder.AddEmbed(embed) |> ignore
|
||||||
|
|
||||||
builder.AddComponents embedButtons |> ignore
|
builder.AddComponents(embedButtons true) |> ignore
|
||||||
do! GuildEnvironment.botClientSlots.Value.SendMessageAsync(channel, builder)
|
do! GuildEnvironment.botClientSlots.Value.SendMessageAsync(channel, builder)
|
||||||
|> Async.AwaitTask
|
|> Async.AwaitTask
|
||||||
|> Async.Ignore
|
|> Async.Ignore
|
||||||
|
Loading…
x
Reference in New Issue
Block a user