Fix some of the invite stuff
This commit is contained in:
parent
5162dcae3d
commit
f206fbf217
@ -68,20 +68,29 @@ let private createInvite inviter code =
|
||||
|> Sql.executeNonQueryAsync
|
||||
|> Async.AwaitTask
|
||||
|
||||
let private addInvitedUser did code count =
|
||||
try
|
||||
let private addInvitedUser did inviterId code count =
|
||||
connStr
|
||||
|> Sql.connect
|
||||
|> Sql.executeTransactionAsync [
|
||||
|> Sql.parameters [ "@code" , Sql.string code ; "@did" , Sql.string (string did) ; "@iid" , Sql.string (string inviterId) ]
|
||||
|> 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));
|
||||
""" , [ [ "@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.Ignore
|
||||
|
||||
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
|
||||
with _ -> async.Zero ()
|
||||
|
||||
let private markInvitedAccepted did =
|
||||
connStr
|
||||
@ -279,9 +288,12 @@ let private processNewUser (eventArgs : GuildMemberAddEventArgs) =
|
||||
for invite in guildInvites do
|
||||
let result = cachedInvites.TryFind(invite.Code)
|
||||
match result with
|
||||
| Some (_,count) ->
|
||||
| Some (inviterId,count) ->
|
||||
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
|
||||
| None -> ()
|
||||
} :> Task
|
||||
|
Loading…
x
Reference in New Issue
Block a user