Fix issues with granting role for inviters

This commit is contained in:
Joseph Ferano 2022-06-18 22:29:44 +07:00
parent f5336fb9b7
commit 545c5886fc

View File

@ -322,18 +322,20 @@ let acceptInvite (guild : DiscordGuild) (user : DiscordMember) =
let role3x = guild.Roles.TryGetValue(GuildEnvironment.roleRecruiter3x) |> snd let role3x = guild.Roles.TryGetValue(GuildEnvironment.roleRecruiter3x) |> snd
let role2x = guild.Roles.TryGetValue(GuildEnvironment.roleRecruiter2x) |> snd let role2x = guild.Roles.TryGetValue(GuildEnvironment.roleRecruiter2x) |> snd
let role1x = guild.Roles.TryGetValue(GuildEnvironment.roleRecruiter1x) |> snd let role1x = guild.Roles.TryGetValue(GuildEnvironment.roleRecruiter1x) |> snd
match! getInvitedUserCount player.DiscordId with let! playerMember = guild.GetMemberAsync(invite.Inviter)
| count when count > 10 -> let! totalInvites = getInvitedUserCount player.DiscordId
do! [ user.GrantRoleAsync(role3x) ; user.RevokeRoleAsync(role2x) ; user.RevokeRoleAsync(role1x) ] if totalInvites >= 10 then
do! [ playerMember.GrantRoleAsync(role3x) ; playerMember.RevokeRoleAsync(role2x) ; playerMember.RevokeRoleAsync(role1x) ]
|> List.map Async.AwaitTask |> List.map Async.AwaitTask
|> Async.Parallel |> Async.Parallel
|> Async.Ignore |> Async.Ignore
| count when count > 5 -> elif totalInvites >= 5 then
do! [ user.GrantRoleAsync(role2x) ; user.RevokeRoleAsync(role1x) ] do! [ playerMember.GrantRoleAsync(role2x) ; playerMember.RevokeRoleAsync(role1x) ]
|> List.map Async.AwaitTask |> List.map Async.AwaitTask
|> Async.Parallel |> Async.Parallel
|> Async.Ignore |> Async.Ignore
| _ -> do! user.GrantRoleAsync(role1x) else
do! playerMember.GrantRoleAsync(role1x)
do! Analytics.invitedUserAccepted invite.Code player.DiscordId user.Id player.Name user.Username do! Analytics.invitedUserAccepted invite.Code player.DiscordId user.Id player.Name user.Username
| None -> return () | None -> return ()
with _ -> () with _ -> ()