Fix some of the invite stuff

This commit is contained in:
Joseph Ferano 2022-06-18 21:05:55 +07:00
parent 5162dcae3d
commit f206fbf217

View File

@ -68,20 +68,29 @@ let private createInvite inviter code =
|> Sql.executeNonQueryAsync |> Sql.executeNonQueryAsync
|> Async.AwaitTask |> Async.AwaitTask
let private addInvitedUser did code count = let private addInvitedUser did inviterId code count =
try connStr
connStr |> Sql.connect
|> Sql.connect |> Sql.parameters [ "@code" , Sql.string code ; "@did" , Sql.string (string did) ; "@iid" , Sql.string (string inviterId) ]
|> Sql.executeTransactionAsync [ |> Sql.query
""" """
INSERT INTO invited_user (discord_id, invite_id) INSERT INTO invited_user (inviter_id, discord_id, invite_id)
VALUES (@did, (SELECT id FROM invite WHERE code = @code)); VALUES (@did, (SELECT id FROM invite WHERE code = @code));
""" , [ [ "@code" , Sql.string code ; "@did" , Sql.string (string did) ] ] """
"UPDATE invite SET count = @count WHERE code = @code" , [ [ "count" , Sql.int count ; "code" , Sql.string code ] ] |> Sql.executeNonQueryAsync
] |> Async.AwaitTask
|> Async.AwaitTask |> Async.Ignore
|> Async.Ignore
with _ -> async.Zero () let private updateInviteCount code count =
connStr
|> Sql.connect
|> Sql.parameters [ "count" , Sql.int count ; "code" , Sql.string code ]
|> Sql.query """
"UPDATE invite SET count = @count WHERE code = @code"
"""
|> Sql.executeNonQueryAsync
|> Async.AwaitTask
|> Async.Ignore
let private markInvitedAccepted did = let private markInvitedAccepted did =
connStr connStr
@ -279,9 +288,12 @@ let private processNewUser (eventArgs : GuildMemberAddEventArgs) =
for invite in guildInvites do for invite in guildInvites do
let result = cachedInvites.TryFind(invite.Code) let result = cachedInvites.TryFind(invite.Code)
match result with match result with
| Some (_,count) -> | Some (inviterId,count) ->
if invite.Uses > count then if invite.Uses > count then
do! addInvitedUser eventArgs.Member.Id invite.Code invite.Uses |> Async.Ignore do! updateInviteCount invite.Code count
try
do! addInvitedUser eventArgs.Member.Id inviterId invite.Code invite.Uses |> Async.Ignore
with ex -> printfn $"Tried to add existing user {eventArgs.Member.Id}:{eventArgs.Member.Username} to invites: {ex.Message}"
do! Analytics.invitedUserEntered invite.Code invite.Inviter.Id eventArgs.Member.Id invite.Inviter.Username eventArgs.Member.Username do! Analytics.invitedUserEntered invite.Code invite.Inviter.Id eventArgs.Member.Id invite.Inviter.Username eventArgs.Member.Username
| None -> () | None -> ()
} :> Task } :> Task