87 lines
2.6 KiB
Forth
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
|
|
|