feat(bot): don't query db message context when running commands

This commit is contained in:
spiral
2022-06-15 19:28:34 -04:00
parent 7cb3a3ea0f
commit 9848b88d5b
9 changed files with 67 additions and 65 deletions

View File

@@ -89,10 +89,12 @@ public class Autoproxy
var eb = new EmbedBuilder()
.Title($"Current autoproxy status (for {ctx.Guild.Name.EscapeMarkdown()})");
var fronters = ctx.MessageContext.LastSwitchMembers;
var sw = await ctx.Repository.GetLatestSwitch(ctx.System.Id);
var fronters = await ctx.Database.Execute(c => ctx.Repository.GetSwitchMembers(c, sw.Id)).ToListAsync();
var relevantMember = settings.AutoproxyMode switch
{
AutoproxyMode.Front => fronters.Length > 0 ? await ctx.Repository.GetMember(fronters[0]) : null,
AutoproxyMode.Front => fronters.Count > 0 ? fronters[0] : null,
AutoproxyMode.Member when settings.AutoproxyMember.HasValue => await ctx.Repository.GetMember(settings.AutoproxyMember.Value),
_ => null
};
@@ -104,7 +106,7 @@ public class Autoproxy
break;
case AutoproxyMode.Front:
{
if (fronters.Length == 0)
if (fronters.Count == 0)
{
eb.Description("Autoproxy is currently set to **front mode** in this server, but there are currently no fronters registered. Use the `pk;switch` command to log a switch.");
}
@@ -135,7 +137,8 @@ public class Autoproxy
default: throw new ArgumentOutOfRangeException();
}
if (!ctx.MessageContext.AllowAutoproxy)
var allowAutoproxy = await ctx.Repository.GetAutoproxyEnabled(ctx.Author.Id);
if (!allowAutoproxy)
eb.Field(new Embed.Field("\u200b", $"{Emojis.Note} Autoproxy is currently **disabled** for your account (<@{ctx.Author.Id}>). To enable it, use `pk;autoproxy account enable`."));
return eb.Build();

View File

@@ -17,10 +17,12 @@ public class Config
{
var items = new List<PaginatedConfigItem>();
var allowAutoproxy = await ctx.Repository.GetAutoproxyEnabled(ctx.Author.Id);
items.Add(new(
"autoproxy account",
"Whether autoproxy is enabled for the current account",
EnabledDisabled(ctx.MessageContext.AllowAutoproxy),
EnabledDisabled(allowAutoproxy),
"enabled"
));
@@ -122,16 +124,18 @@ public class Config
public async Task AutoproxyAccount(Context ctx)
{
var allowAutoproxy = await ctx.Repository.GetAutoproxyEnabled(ctx.Author.Id);
if (!ctx.HasNext())
{
await ctx.Reply($"Autoproxy is currently **{EnabledDisabled(ctx.MessageContext.AllowAutoproxy)}** for account <@{ctx.Author.Id}>.");
await ctx.Reply($"Autoproxy is currently **{EnabledDisabled(allowAutoproxy)}** for account <@{ctx.Author.Id}>.");
return;
}
var allow = ctx.MatchToggle(true);
var statusString = EnabledDisabled(allow);
if (ctx.MessageContext.AllowAutoproxy == allow)
if (allowAutoproxy == allow)
{
await ctx.Reply($"{Emojis.Note} Autoproxy is already {statusString} for account <@{ctx.Author.Id}>.");
return;

View File

@@ -126,8 +126,7 @@ public class ProxiedMessage
if ((await ctx.BotPermissions).HasFlag(PermissionSet.ManageMessages))
await _rest.DeleteMessage(ctx.Channel.Id, ctx.Message.Id);
await _logChannel.LogMessage(ctx.MessageContext, msg.Message, ctx.Message, editedMsg,
originalMsg!.Content!);
await _logChannel.LogMessage(msg.Message, ctx.Message, editedMsg, originalMsg!.Content!);
}
catch (NotFoundException)
{

View File

@@ -277,7 +277,7 @@ public class SystemEdit
await ctx.Reply(
$"{Emojis.Success} System server tag changed. Member names will now end with {newTag.AsCode()} when proxied in the current server '{ctx.Guild.Name}'.");
if (!ctx.MessageContext.TagEnabled)
if (!settings.TagEnabled)
await ctx.Reply(setDisabledWarning);
}
@@ -288,7 +288,7 @@ public class SystemEdit
await ctx.Reply(
$"{Emojis.Success} System server tag cleared. Member names will now end with the global system tag, if there is one set.");
if (!ctx.MessageContext.TagEnabled)
if (!settings.TagEnabled)
await ctx.Reply(setDisabledWarning);
}
@@ -297,7 +297,7 @@ public class SystemEdit
await ctx.Repository.UpdateSystemGuild(target.Id, ctx.Guild.Id,
new SystemGuildPatch { TagEnabled = newValue });
await ctx.Reply(PrintEnableDisableResult(newValue, newValue != ctx.MessageContext.TagEnabled));
await ctx.Reply(PrintEnableDisableResult(newValue, newValue != settings.TagEnabled));
}
string PrintEnableDisableResult(bool newValue, bool changedValue)
@@ -312,20 +312,20 @@ public class SystemEdit
if (newValue)
{
if (ctx.MessageContext.TagEnabled)
if (settings.TagEnabled)
{
if (ctx.MessageContext.SystemGuildTag == null)
if (settings.Tag == null)
str +=
" However, you do not have a system tag specific to this server. Messages will be proxied using your global system tag, if there is one set.";
else
str +=
$" Your current system tag in '{ctx.Guild.Name}' is {ctx.MessageContext.SystemGuildTag.AsCode()}.";
$" Your current system tag in '{ctx.Guild.Name}' is {settings.Tag.AsCode()}.";
}
else
{
if (ctx.MessageContext.SystemGuildTag != null)
if (settings.Tag != null)
str +=
$" Member names will now end with the server-specific tag {ctx.MessageContext.SystemGuildTag.AsCode()} when proxied in the current server '{ctx.Guild.Name}'.";
$" Member names will now end with the server-specific tag {settings.Tag.AsCode()} when proxied in the current server '{ctx.Guild.Name}'.";
else
str +=
" Member names will now end with the global system tag when proxied in the current server, if there is one set.";