168 lines
5.2 KiB
Forth
168 lines
5.2 KiB
Forth
module Degenz.Analytics
|
|
|
|
open DSharpPlus.Entities
|
|
open Mixpanel
|
|
|
|
let private mix = MixpanelClient(GuildEnvironment.tokenMixpanel)
|
|
|
|
let private track eventName id data = async {
|
|
let mapObj = data |> List.map (fun e -> ( fst e , snd e |> box) )
|
|
let map =
|
|
[ "distinct_id" , box (string id)
|
|
"guild_id" , box (string GuildEnvironment.guildId)
|
|
"env" , box GuildEnvironment.environment ]
|
|
let! _ = mix.TrackAsync(eventName, mapObj @ map |> dict) |> Async.AwaitTask
|
|
return ()
|
|
}
|
|
|
|
let invitedUserEntered inviteCode inviterId inviteeId inviterName inviteeName =
|
|
let data = [
|
|
"user_display_name" , inviterName
|
|
"invite_code" , inviteCode
|
|
"invitee_id" , string inviteeId
|
|
"invitee_name" , inviteeName
|
|
]
|
|
track "Invited User Entered" inviterId data
|
|
|
|
let invitedUserAccepted inviteCode inviterId inviteeId inviterName inviteeName =
|
|
let data = [
|
|
"user_display_name" , inviterName
|
|
"invite_code" , inviteCode
|
|
"invitee_id" , string inviteeId
|
|
"invitee_name" , inviteeName
|
|
]
|
|
track "Invited User Accepted" inviterId data
|
|
|
|
let recruitCommand origin id name (channel : DiscordChannel) =
|
|
let data = [
|
|
"user_display_name" , name
|
|
"origin" , origin
|
|
"channel_id" , string channel.Id
|
|
"channel_name" , channel.Name
|
|
]
|
|
track "Recruit Command Invoked" id data
|
|
|
|
let recruitLinkButton inviteCode id name (channel : DiscordChannel) =
|
|
let data = [
|
|
"user_display_name" , name
|
|
"invite_code" , inviteCode
|
|
"channel_id" , string channel.Id
|
|
"channel_name" , channel.Name
|
|
]
|
|
track "Recruited Link Button Clicked" id data
|
|
|
|
let recruitedCommand totalUsers id name (channel : DiscordChannel) =
|
|
let data = [
|
|
"user_display_name" , name
|
|
"total_users_at_the_time" , string totalUsers
|
|
"channel_id" , string channel.Id
|
|
"channel_name" , channel.Name
|
|
]
|
|
track "Recruited Command Invoked" id data
|
|
|
|
let whiteListButton availability id name =
|
|
let data = [
|
|
"user_display_name" , name
|
|
"availability" , availability
|
|
]
|
|
track "Whitelist Button Clicked" id data
|
|
|
|
let whiteListPurchased amount stock id name =
|
|
let data = [
|
|
"user_display_name" , name
|
|
"purchase_price" , string amount
|
|
"stock" , string stock
|
|
]
|
|
track "Whitelist Purchased" id data
|
|
|
|
let trainingDojoStep step id name =
|
|
let data = [
|
|
"user_display_name" , name
|
|
]
|
|
track ("Training Dojo " + step) id data
|
|
|
|
let trainingDojoCompleted alreadyCompleted id name =
|
|
let data = [
|
|
"user_display_name" , name
|
|
"previously_completed" , string alreadyCompleted
|
|
]
|
|
track "Training Dojo Completed" id data
|
|
|
|
let arsenalCommand (discordMember : DiscordMember) =
|
|
let data = [
|
|
"user_display_name" , discordMember.Username
|
|
]
|
|
track "Arsenal Command Invoked" discordMember.Id data
|
|
|
|
let buyItemCommand (discordMember : DiscordMember) store =
|
|
let data = [
|
|
"user_display_name" , discordMember.Username
|
|
"store_symbol" , store
|
|
]
|
|
track "Buy Item Command Invoked" discordMember.Id data
|
|
|
|
let sellItemCommand (discordMember : DiscordMember) store =
|
|
let data = [
|
|
"user_display_name" , discordMember.Username
|
|
"store_symbol" , store
|
|
]
|
|
track "Sell Item Command Invoked" discordMember.Id data
|
|
|
|
let buyWeaponButton (discordMember : DiscordMember) itemName itemPrice =
|
|
let data = [
|
|
"user_display_name" , discordMember.Username
|
|
"weapon_name" , itemName
|
|
"weapon_price" , string itemPrice
|
|
]
|
|
track "Buy Weapon Button Clicked" discordMember.Id data
|
|
|
|
let sellWeaponButton (discordMember : DiscordMember) (weapon : Item) price =
|
|
let data = [
|
|
"user_display_name" , discordMember.Username
|
|
"weapon_name" , weapon.Name
|
|
"weapon_price" , string price
|
|
]
|
|
track "Sell Weapon Button Clicked" discordMember.Id data
|
|
|
|
let hackCommand (discordMember : DiscordMember) =
|
|
let data = [
|
|
"user_display_name" , discordMember.Username
|
|
]
|
|
track "Hack Command Invoked" discordMember.Id data
|
|
|
|
let shieldCommand (discordMember : DiscordMember) =
|
|
let data = [
|
|
"user_display_name" , discordMember.Username
|
|
]
|
|
track "Shield Command Invoked" discordMember.Id data
|
|
|
|
let hackedTarget (discordMember : DiscordMember) hackName success =
|
|
let data = [
|
|
"user_display_name" , discordMember.Username
|
|
"hack_name" , hackName
|
|
"was_successful" , string success
|
|
]
|
|
track "Hack Button Clicked" discordMember.Id data
|
|
|
|
let shieldActivated (discordMember : DiscordMember) shieldName =
|
|
let data = [
|
|
"user_display_name" , discordMember.Username
|
|
"shield_name" , shieldName
|
|
]
|
|
track "Shield Button Clicked" discordMember.Id data
|
|
|
|
let prizeTableViewed (discordMember : DiscordMember) =
|
|
let data = [
|
|
"user_display_name" , discordMember.Username
|
|
]
|
|
track "Prize Table Button Clicked" discordMember.Id data
|
|
|
|
let slotPlayed (discordMember : DiscordMember) amount result prize =
|
|
let data = [
|
|
"user_display_name" , discordMember.Username
|
|
"play_amount" , string amount
|
|
"result" , result
|
|
"prize" , string prize
|
|
]
|
|
track "Slots Played" discordMember.Id data
|