diff --git a/Bot/InviteTracker.fs b/Bot/InviteTracker.fs index 85493cc..56ddc9b 100644 --- a/Bot/InviteTracker.fs +++ b/Bot/InviteTracker.fs @@ -287,15 +287,18 @@ let private processNewUser (eventArgs : GuildMemberAddEventArgs) = match result with | Some (inviterId,count) -> if invite.Uses > count then - try do! updateInviteCount invite.Code invite.Uses - do! addInvitedUser eventArgs.Member.Id inviterId invite.Code |> Async.Ignore + try + match! checkUserAlreadyInvited eventArgs.Member.Id with + | false -> + do! addInvitedUser eventArgs.Member.Id inviterId invite.Code |> Async.Ignore + match! DbService.tryFindPlayer inviterId with + | Some inviter -> + do! Analytics.invitedUserEntered invite.Code inviter.DiscordId eventArgs.Member.Id inviter.Name eventArgs.Member.Username + | None -> + do! Analytics.invitedUserEntered invite.Code inviterId eventArgs.Member.Id "Unknown" eventArgs.Member.Username + | true -> () with ex -> printfn $"Tried to add existing user {eventArgs.Member.Id}:{eventArgs.Member.Username} to invites: {ex.Message}" - match! DbService.tryFindPlayer inviterId with - | Some inviter -> - do! Analytics.invitedUserEntered invite.Code inviter.DiscordId eventArgs.Member.Id inviter.Name eventArgs.Member.Username - | None -> - do! Analytics.invitedUserEntered invite.Code inviterId eventArgs.Member.Id "Unknown" eventArgs.Member.Username | None -> () } :> Task @@ -489,12 +492,7 @@ let handleMessageCreated _ (event : MessageCreateEventArgs) = do! event.Message.DeleteAsync() } :> Task -let handleGuildMemberAdded _ (eventArgs : GuildMemberAddEventArgs) = - task { - let! exists = checkUserAlreadyInvited eventArgs.Member.Id - if not exists then - do! processNewUser eventArgs - } :> Task +let handleGuildMemberAdded _ (eventArgs : GuildMemberAddEventArgs) = processNewUser eventArgs let submitAddress (address : string) (ctx : IDiscordContext) = PlayerInteractions.executePlayerAction ctx (fun player -> async {