Clean up a few database pool uses
This commit is contained in:
parent
13260a4b0e
commit
9bbe9df16d
@ -57,8 +57,7 @@ namespace PluralKit.Bot
|
||||
// since this can happen in DMs as well
|
||||
if (evt.Emoji.Name == "\u274c")
|
||||
{
|
||||
await using var conn = await _db.Obtain();
|
||||
var commandMsg = await _commandMessageService.GetCommandMessage(conn, evt.MessageId);
|
||||
var commandMsg = await _db.Execute(c => _commandMessageService.GetCommandMessage(c, evt.MessageId));
|
||||
if (commandMsg != null)
|
||||
{
|
||||
await HandleCommandDeleteReaction(evt, commandMsg);
|
||||
@ -77,8 +76,7 @@ namespace PluralKit.Bot
|
||||
// Message deletion
|
||||
case "\u274C": // Red X
|
||||
{
|
||||
await using var conn = await _db.Obtain();
|
||||
var msg = await _repo.GetMessage(conn, evt.MessageId);
|
||||
var msg = await _db.Execute(c => _repo.GetMessage(c, evt.MessageId));
|
||||
if (msg != null)
|
||||
await HandleProxyDeleteReaction(evt, msg);
|
||||
|
||||
@ -87,8 +85,7 @@ namespace PluralKit.Bot
|
||||
case "\u2753": // Red question mark
|
||||
case "\u2754": // White question mark
|
||||
{
|
||||
await using var conn = await _db.Obtain();
|
||||
var msg = await _repo.GetMessage(conn, evt.MessageId);
|
||||
var msg = await _db.Execute(c => _repo.GetMessage(c, evt.MessageId));
|
||||
if (msg != null)
|
||||
await HandleQueryReaction(evt, msg);
|
||||
|
||||
@ -101,8 +98,7 @@ namespace PluralKit.Bot
|
||||
case "\u23F0": // Alarm clock
|
||||
case "\u2757": // Exclamation mark
|
||||
{
|
||||
await using var conn = await _db.Obtain();
|
||||
var msg = await _repo.GetMessage(conn, evt.MessageId);
|
||||
var msg = await _db.Execute(c => _repo.GetMessage(c, evt.MessageId));
|
||||
if (msg != null)
|
||||
await HandlePingReaction(evt, msg);
|
||||
break;
|
||||
@ -115,11 +111,10 @@ namespace PluralKit.Bot
|
||||
if (!_bot.PermissionsIn(evt.ChannelId).HasFlag(PermissionSet.ManageMessages))
|
||||
return;
|
||||
|
||||
using var conn = await _db.Obtain();
|
||||
var system = await _repo.GetSystemByAccount(conn, evt.UserId);
|
||||
var system = await _db.Execute(c => _repo.GetSystemByAccount(c, evt.UserId));
|
||||
|
||||
// Can only delete your own message
|
||||
if (msg.System.Id != system.Id) return;
|
||||
if (msg.System.Id != system?.Id) return;
|
||||
|
||||
try
|
||||
{
|
||||
|
@ -55,15 +55,16 @@ namespace PluralKit.Bot
|
||||
{
|
||||
if (!ShouldProxy(channel, message, ctx))
|
||||
return false;
|
||||
|
||||
// Fetch members and try to match to a specific member
|
||||
await using var conn = await _db.Obtain();
|
||||
|
||||
|
||||
var rootChannel = _cache.GetRootChannel(message.ChannelId);
|
||||
|
||||
List<ProxyMember> members;
|
||||
// Fetch members and try to match to a specific member
|
||||
using (_metrics.Measure.Timer.Time(BotMetrics.ProxyMembersQueryTime))
|
||||
{
|
||||
await using var conn = await _db.Obtain();
|
||||
members = (await _repo.GetProxyMembers(conn, message.Author.Id, message.GuildId!.Value)).ToList();
|
||||
}
|
||||
|
||||
if (!_matcher.TryMatch(ctx, members, out var match, message.Content, message.Attachments.Length > 0,
|
||||
allowAutoproxy)) return false;
|
||||
@ -85,7 +86,7 @@ namespace PluralKit.Bot
|
||||
var allowEmbeds = senderPermissions.HasFlag(PermissionSet.EmbedLinks);
|
||||
|
||||
// Everything's in order, we can execute the proxy!
|
||||
await ExecuteProxy(shard, conn, message, ctx, match, allowEveryone, allowEmbeds);
|
||||
await ExecuteProxy(shard, message, ctx, match, allowEveryone, allowEmbeds);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -122,7 +123,7 @@ namespace PluralKit.Bot
|
||||
return true;
|
||||
}
|
||||
|
||||
private async Task ExecuteProxy(Shard shard, IPKConnection conn, Message trigger, MessageContext ctx,
|
||||
private async Task ExecuteProxy(Shard shard, Message trigger, MessageContext ctx,
|
||||
ProxyMatch match, bool allowEveryone, bool allowEmbeds)
|
||||
{
|
||||
// Create reply embed
|
||||
@ -161,7 +162,7 @@ namespace PluralKit.Bot
|
||||
Embeds = embeds.ToArray(),
|
||||
AllowEveryone = allowEveryone,
|
||||
});
|
||||
await HandleProxyExecutedActions(shard, conn, ctx, trigger, proxyMessage, match);
|
||||
await HandleProxyExecutedActions(shard, ctx, trigger, proxyMessage, match);
|
||||
}
|
||||
|
||||
private async Task<(string?, string?)> FetchReferencedMessageAuthorInfo(Message trigger, Message referenced)
|
||||
@ -281,7 +282,7 @@ namespace PluralKit.Bot
|
||||
private string FixSameNameInner(string name)
|
||||
=> $"{name}\u17b5";
|
||||
|
||||
private async Task HandleProxyExecutedActions(Shard shard, IPKConnection conn, MessageContext ctx,
|
||||
private async Task HandleProxyExecutedActions(Shard shard, MessageContext ctx,
|
||||
Message triggerMessage, Message proxyMessage,
|
||||
ProxyMatch match)
|
||||
{
|
||||
@ -295,7 +296,11 @@ namespace PluralKit.Bot
|
||||
Sender = triggerMessage.Author.Id
|
||||
};
|
||||
|
||||
Task SaveMessageInDatabase() => _repo.AddMessage(conn, sentMessage);
|
||||
async Task SaveMessageInDatabase()
|
||||
{
|
||||
await using var conn = await _db.Obtain();
|
||||
await _repo.AddMessage(conn, sentMessage);
|
||||
}
|
||||
|
||||
Task LogMessageToChannel() => _logChannel.LogMessage(ctx, sentMessage, triggerMessage, proxyMessage).AsTask();
|
||||
|
||||
|
@ -31,7 +31,7 @@ namespace PluralKit.Bot
|
||||
await _db.Execute(conn => _repo.SaveCommandMessage(conn, messageId, authorId));
|
||||
}
|
||||
|
||||
public async Task<CommandMessage> GetCommandMessage(IPKConnection conn, ulong messageId)
|
||||
public async Task<CommandMessage?> GetCommandMessage(IPKConnection conn, ulong messageId)
|
||||
{
|
||||
return await _repo.GetCommandMessage(conn, messageId);
|
||||
}
|
||||
|
@ -43,9 +43,13 @@ namespace PluralKit.Bot
|
||||
|
||||
var triggerChannel = _cache.GetChannel(proxiedMessage.Channel);
|
||||
|
||||
await using var conn = await _db.Obtain();
|
||||
var system = await _repo.GetSystem(conn, ctx.SystemId.Value);
|
||||
var member = await _repo.GetMember(conn, proxiedMessage.Member);
|
||||
PKSystem system;
|
||||
PKMember member;
|
||||
await using (var conn = await _db.Obtain())
|
||||
{
|
||||
system = await _repo.GetSystem(conn, ctx.SystemId.Value);
|
||||
member = await _repo.GetMember(conn, proxiedMessage.Member);
|
||||
}
|
||||
|
||||
// Send embed!
|
||||
var embed = _embed.CreateLoggedMessageEmbed(trigger, hookMessage, system.Hid, member, triggerChannel.Name, oldContent);
|
||||
|
@ -10,7 +10,7 @@ namespace PluralKit.Core
|
||||
conn.QueryAsync("insert into command_messages (message_id, author_id) values (@Message, @Author)",
|
||||
new { Message = messageId, Author = authorId });
|
||||
|
||||
public Task<CommandMessage> GetCommandMessage(IPKConnection conn, ulong messageId) =>
|
||||
public Task<CommandMessage?> GetCommandMessage(IPKConnection conn, ulong messageId) =>
|
||||
conn.QuerySingleOrDefaultAsync<CommandMessage>("select * from command_messages where message_id = @Message",
|
||||
new { Message = messageId });
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user