feat(bot): basic webhook username templating

This commit is contained in:
libglfw 2024-10-22 03:05:32 -04:00 committed by Iris System
parent 87196e3297
commit 4248b7bc32
16 changed files with 78 additions and 14 deletions

View file

@ -25,6 +25,7 @@ public class MessageContext
public string? SystemTag { get; }
public string? SystemGuildTag { get; }
public bool TagEnabled { get; }
public string? NameFormat { get; }
public string? SystemAvatar { get; }
public string? SystemGuildAvatar { get; }
public bool AllowAutoproxy { get; }

View file

@ -31,17 +31,23 @@ public class ProxyMember
public bool AllowAutoproxy { get; }
public string? Color { get; }
// If not set, this formatting will be applied to the proxy name
public static string DefaultFormat = "{name} {tag}";
public static string FormatTag(string template, string tag, string name) => StringUtils.SafeFormat(template, new[] {
("{tag}", tag),
("{name}", name)
});
public string ProxyName(MessageContext ctx)
{
// TODO: if tag is null it should still format but only if it appears in the formatting.
var memberName = ServerName ?? DisplayName ?? Name;
if (!ctx.TagEnabled)
var tag = ctx.SystemGuildTag ?? ctx.SystemTag;
if (!ctx.TagEnabled || tag == null)
return memberName;
if (ctx.SystemGuildTag != null)
return $"{memberName} {ctx.SystemGuildTag}";
if (ctx.SystemTag != null)
return $"{memberName} {ctx.SystemTag}";
return memberName;
return FormatTag(ctx.NameFormat ?? DefaultFormat, tag, memberName);
}
public string? ProxyAvatar(MessageContext ctx) => ServerAvatar ?? WebhookAvatar ?? Avatar ?? ctx.SystemGuildAvatar ?? ctx.SystemAvatar;

View file

@ -1,4 +1,4 @@
create function message_context(account_id bigint, guild_id bigint, channel_id bigint, thread_id bigint)
create function message_context(account_id bigint, guild_id bigint, channel_id bigint, thread_id bigint)
returns table (
allow_autoproxy bool,
@ -10,6 +10,7 @@
case_sensitive_proxy_tags bool,
proxy_error_message_enabled bool,
proxy_switch bool,
name_format text,
tag_enabled bool,
proxy_enabled bool,
@ -42,6 +43,7 @@ as $$
system_config.case_sensitive_proxy_tags as case_sensitive_proxy_tags,
system_config.proxy_error_message_enabled as proxy_error_message_enabled,
system_config.proxy_switch as proxy_switch,
system_config.name_format as name_format,
-- system_guild table
coalesce(system_guild.tag_enabled, true) as tag_enabled,
@ -174,4 +176,4 @@ begin
if not exists (select 1 from groups where hid = new_hid) then return new_hid; end if;
end loop;
end
$$ language plpgsql volatile;
$$ language plpgsql volatile;

View file

@ -0,0 +1,6 @@
-- database version 47
-- add config setting for supplying a custom tag format in names
alter table system_config add column name_format text;
update info set schema_version = 47;

View file

@ -9,7 +9,7 @@ namespace PluralKit.Core;
internal class DatabaseMigrator
{
private const string RootPath = "PluralKit.Core.Database"; // "resource path" root for SQL files
private const int TargetSchemaVersion = 46;
private const int TargetSchemaVersion = 47;
private readonly ILogger _logger;
public DatabaseMigrator(ILogger logger)