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 role2x = guild.Roles.TryGetValue(GuildEnvironment.roleRecruiter2x) |> snd
let role1x = guild.Roles.TryGetValue(GuildEnvironment.roleRecruiter1x) |> snd
match! getInvitedUserCount player.DiscordId with
| count when count > 10 ->
do! [ user.GrantRoleAsync(role3x) ; user.RevokeRoleAsync(role2x) ; user.RevokeRoleAsync(role1x) ]
let! playerMember = guild.GetMemberAsync(invite.Inviter)
let! totalInvites = getInvitedUserCount player.DiscordId
if totalInvites >= 10 then
do! [ playerMember.GrantRoleAsync(role3x) ; playerMember.RevokeRoleAsync(role2x) ; playerMember.RevokeRoleAsync(role1x) ]
|> List.map Async.AwaitTask
|> Async.Parallel
|> Async.Ignore
| count when count > 5 ->
do! [ user.GrantRoleAsync(role2x) ; user.RevokeRoleAsync(role1x) ]
elif totalInvites >= 5 then
do! [ playerMember.GrantRoleAsync(role2x) ; playerMember.RevokeRoleAsync(role1x) ]
|> List.map Async.AwaitTask
|> Async.Parallel
|> Async.Ignore
| _ -> do! user.GrantRoleAsync(role1x)
else
do! playerMember.GrantRoleAsync(role1x)
do! Analytics.invitedUserAccepted invite.Code player.DiscordId user.Id player.Name user.Username
| None -> return ()
with _ -> ()