discord-bot-game/Bot/Analytics.fs

87 lines
2.6 KiB
Forth

module Degenz.Analytics
open Mixpanel
let private mix = MixpanelClient(GuildEnvironment.tokenMixpanel)
let private track eventName id data =
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 ]
mix.TrackAsync(eventName, mapObj @ map |> dict) |> Async.AwaitTask |> Async.Ignore
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 channelId channelName =
let data = [
"user_display_name" , name
"origin" , origin
"channel_id" , string channelId
"channel_name" , channelName
]
track "Recruit Command Invoked" id data
let recruitLinkButton inviteCode id name channelId channelName =
let data = [
"user_display_name" , name
"invite_code" , inviteCode
"channel_id" , string channelId
"channel_name" , channelName
]
track "Recruited Link Button Clicked" id data
let recruitedCommand totalUsers id name channelId channelName =
let data = [
"user_display_name" , name
"total_users_at_the_time" , string totalUsers
"channel_id" , string channelId
"channel_name" , channelName
]
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 id name =
let data = [
"user_display_name" , name
"purchase_amount" , string amount
]
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