mirror of
https://github.com/PluralKit/PluralKit.git
synced 2026-02-08 14:57:54 +00:00
feat(bot): basic webhook username templating
This commit is contained in:
parent
87196e3297
commit
4248b7bc32
16 changed files with 78 additions and 14 deletions
|
|
@ -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; }
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
Loading…
Add table
Add a link
Reference in a new issue