mirror of
https://github.com/PluralKit/PluralKit.git
synced 2026-02-07 22:37:54 +00:00
Add channel blacklists for logging and proxying
Necessary database migrations for this commit:
alter table servers add column log_blacklist bigint[] not null default array[]::bigint[];
alter table servers add column blacklist bigint[] not null default array[]::bigint[];
This commit is contained in:
parent
0cdd99d195
commit
378cba09e5
7 changed files with 142 additions and 36 deletions
|
|
@ -18,21 +18,21 @@ namespace PluralKit.Bot {
|
|||
_logger = logger.ForContext<LogChannelService>();
|
||||
}
|
||||
|
||||
public async Task LogMessage(PKSystem system, PKMember member, ulong messageId, ulong originalMsgId, IGuildChannel originalChannel, IUser sender, string content) {
|
||||
var logChannel = await GetLogChannel(originalChannel.Guild);
|
||||
if (logChannel == null) return;
|
||||
public async Task LogMessage(PKSystem system, PKMember member, ulong messageId, ulong originalMsgId, IGuildChannel originalChannel, IUser sender, string content)
|
||||
{
|
||||
var guildCfg = await _data.GetOrCreateGuildConfig(originalChannel.GuildId);
|
||||
|
||||
// Bail if logging is disabled either globally or for this channel
|
||||
if (guildCfg.LogChannel == null) return;
|
||||
if (guildCfg.LogBlacklist.Contains(originalChannel.Id)) return;
|
||||
|
||||
// Bail if we can't find the channel
|
||||
if (!(await _client.GetChannelAsync(guildCfg.LogChannel.Value) is ITextChannel logChannel)) return;
|
||||
|
||||
var embed = _embed.CreateLoggedMessageEmbed(system, member, messageId, originalMsgId, sender, content, originalChannel);
|
||||
|
||||
var url = $"https://discordapp.com/channels/{originalChannel.GuildId}/{originalChannel.Id}/{messageId}";
|
||||
await logChannel.SendMessageAsync(text: url, embed: embed);
|
||||
}
|
||||
|
||||
private async Task<ITextChannel> GetLogChannel(IGuild guild)
|
||||
{
|
||||
var guildCfg = await _data.GetGuildConfig(guild.Id);
|
||||
if (guildCfg.LogChannel == null) return null;
|
||||
return await _client.GetChannelAsync(guildCfg.LogChannel.Value) as ITextChannel;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue