module Degenz.Analytics open Mixpanel let private mix = MixpanelClient(GuildEnvironment.tokenMixpanel) let private track eventName id data = let map = [ "distinct_id" , box id "guild_id" , box GuildEnvironment.guildId "env" , box GuildEnvironment.environment ] mix.TrackAsync(eventName, data @ map |> dict) |> Async.AwaitTask |> Async.Ignore let invitedUserEntered inviteCode inviterId inviteeId inviterName inviteeName = let data = [ "user_display_name" , inviterName "invite_code" , inviteCode "invitee_id" , 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" , 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" , 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" , channelId "channel_name" , channelName ] track "Recruited Command Invoked" id data let recruitedCommand totalUsers id name channelId channelName = let data = [ "user_display_name" , name "total_users_at_the_time" , totalUsers "channel_id" , channelId "channel_name" , channelName ] track "Recruited Command Invoked" id data let whiteListButton availability id name = let data = [ "user_display_name" , name "availability" , availability ] track "Recruited Command Invoked" id data let whiteListPurchased amount id name = let data = [ "user_display_name" , name "purchase_amount" , amount ] track "Recruited Command Invoked" id data let trainingDojoStep step id name = let data = [ "user_display_name" , name "step" , step ] track "Recruited Command Invoked" id data