feat(bot): add option to log a switch when proxying

This commit is contained in:
Petal Ladenson 2024-11-09 11:34:06 -07:00 committed by GitHub
parent a0f6ed6f89
commit e1c2e6b6d6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 50 additions and 3 deletions

View file

@ -596,6 +596,8 @@ public partial class CommandTree
return ctx.Execute<Config>(null, m => m.HidListPadding(ctx));
if (ctx.MatchMultiple(new[] { "member", "group" }, new[] { "limit" }) || ctx.Match("limit"))
return ctx.Execute<Config>(null, m => m.LimitUpdate(ctx));
if (ctx.MatchMultiple(new[] { "proxy" }, new[] { "switch" }) || ctx.Match("proxyswitch", "ps"))
return ctx.Execute<Config>(null, m => m.ProxySwitch(ctx));
// todo: maybe add the list of configuration keys here?
return ctx.Reply($"{Emojis.Error} Could not find a setting with that name. Please see `pk;commands config` for the list of possible config settings.");

View file

@ -123,6 +123,13 @@ public class Config
"off"
));
items.Add(new(
"Proxy Switch",
"Whether using a proxy tag logs a switch",
EnabledDisabled(ctx.Config.ProxySwitch),
"disabled"
));
await ctx.Paginate<PaginatedConfigItem>(
items.ToAsyncEnumerable(),
items.Count,
@ -537,6 +544,20 @@ public class Config
else throw new PKError(badInputError);
}
public async Task ProxySwitch(Context ctx)
{
if (!ctx.HasNext())
{
var msg = $"Logging a switch every time a proxy tag is used is currently **{EnabledDisabled(ctx.Config.ProxySwitch)}**.";
await ctx.Reply(msg);
return;
}
var newVal = ctx.MatchToggle(false);
await ctx.Repository.UpdateSystemConfig(ctx.System.Id, new() { ProxySwitch = newVal });
await ctx.Reply($"Logging a switch every time a proxy tag is used is now {EnabledDisabled(newVal)}.");
}
public Task LimitUpdate(Context ctx)
{
throw new PKError("You cannot update your own member or group limits. If you need a limit update, please join the " +

View file

@ -506,6 +506,10 @@ public class ProxyService
Task DispatchWebhook() => _dispatch.Dispatch(ctx.SystemId.Value, sentMessage);
Task MaybeLogSwitch() => (ctx.ProxySwitch && !Array.Exists(ctx.LastSwitchMembers, element => element == match.Member.Id))
? _db.Execute(conn => _repo.AddSwitch(conn, (SystemId)ctx.SystemId, new[] { match.Member.Id }))
: Task.CompletedTask;
async Task DeleteProxyTriggerMessage()
{
if (!deletePrevious)
@ -539,7 +543,8 @@ public class ProxyService
UpdateMemberForSentMessage(),
LogMessageToChannel(),
SaveLatchAutoproxy(),
DispatchWebhook()
DispatchWebhook(),
MaybeLogSwitch()
);
}