chore: format with csharpier

This commit is contained in:
sam 2024-10-09 17:35:11 +02:00
parent 2f516dcb73
commit 4f54077c68
59 changed files with 2000 additions and 942 deletions

View file

@ -16,37 +16,47 @@ public class ChannelCreateResponder(
RoleCache roleCache,
ChannelCache channelCache,
UserCache userCache,
WebhookExecutorService webhookExecutor) : IResponder<IChannelCreate>
WebhookExecutorService webhookExecutor
) : IResponder<IChannelCreate>
{
public async Task<Result> RespondAsync(IChannelCreate ch, CancellationToken ct = default)
{
if (!ch.GuildID.IsDefined()) return Result.Success;
if (!ch.GuildID.IsDefined())
return Result.Success;
channelCache.Set(ch);
var builder = new EmbedBuilder()
.WithTitle(ch.Type switch
{
ChannelType.GuildVoice => "Voice channel created",
ChannelType.GuildCategory => "Category channel created",
ChannelType.GuildAnnouncement or ChannelType.GuildText => "Text channel created",
_ => "Channel created"
})
.WithTitle(
ch.Type switch
{
ChannelType.GuildVoice => "Voice channel created",
ChannelType.GuildCategory => "Category channel created",
ChannelType.GuildAnnouncement or ChannelType.GuildText =>
"Text channel created",
_ => "Channel created",
}
)
.WithColour(DiscordUtils.Green)
.WithFooter($"ID: {ch.ID}");
if (ch.ParentID.IsDefined(out var parentId))
{
builder.WithDescription(channelCache.TryGet(parentId.Value, out var parentChannel)
? $"**Name:** {ch.Name}\n**Category:** {parentChannel.Name}"
: $"**Name:** {ch.Name}");
builder.WithDescription(
channelCache.TryGet(parentId.Value, out var parentChannel)
? $"**Name:** {ch.Name}\n**Category:** {parentChannel.Name}"
: $"**Name:** {ch.Name}"
);
}
else builder.WithDescription($"**Name:** {ch.Name}");
else
builder.WithDescription($"**Name:** {ch.Name}");
foreach (var overwrite in ch.PermissionOverwrites.OrDefault() ?? [])
{
if (overwrite.Type == PermissionOverwriteType.Role)
{
var roleName = roleCache.TryGet(overwrite.ID, out var role) ? role.Name : $"role {overwrite.ID}";
var roleName = roleCache.TryGet(overwrite.ID, out var role)
? role.Name
: $"role {overwrite.ID}";
var embedFieldValue = "";
if (overwrite.Allow.GetPermissions().Count != 0)
embedFieldValue += $"\u2705 {overwrite.Allow.ToPrettyString()}";
@ -64,12 +74,19 @@ public class ChannelCreateResponder(
if (overwrite.Deny.GetPermissions().Count != 0)
embedFieldValue += $"\n\n\u274c {overwrite.Deny.ToPrettyString()}";
builder.AddField($"Override for {user?.Tag() ?? $"user {overwrite.ID}"}", embedFieldValue.Trim());
builder.AddField(
$"Override for {user?.Tag() ?? $"user {overwrite.ID}"}",
embedFieldValue.Trim()
);
}
}
var guildConfig = await db.GetGuildAsync(ch.GuildID.Value, ct);
webhookExecutor.QueueLog(guildConfig, LogChannelType.ChannelCreate, builder.Build().GetOrThrow());
webhookExecutor.QueueLog(
guildConfig,
LogChannelType.ChannelCreate,
builder.Build().GetOrThrow()
);
return Result.Success;
}
}
}

View file

@ -14,7 +14,8 @@ public class ChannelDeleteResponder(
ILogger logger,
DatabaseContext db,
ChannelCache channelCache,
WebhookExecutorService webhookExecutor) : IResponder<IChannelDelete>
WebhookExecutorService webhookExecutor
) : IResponder<IChannelDelete>
{
private readonly ILogger _logger = logger.ForContext<ChannelDeleteResponder>();
@ -41,7 +42,10 @@ public class ChannelDeleteResponder(
.WithCurrentTimestamp()
.WithDescription($"**Name:** {channel.Name.Value}");
if (channel.ParentID.IsDefined(out var parentId) && channelCache.TryGet(parentId.Value, out var category))
if (
channel.ParentID.IsDefined(out var parentId)
&& channelCache.TryGet(parentId.Value, out var category)
)
embed.Description += $"\n**Category:** {category.Name}";
else
embed.Description += "\n**Category:** (none)";
@ -49,7 +53,11 @@ public class ChannelDeleteResponder(
if (channel.Topic.IsDefined(out var topic))
embed.AddField("Description", topic);
webhookExecutor.QueueLog(guildConfig, LogChannelType.ChannelDelete, embed.Build().GetOrThrow());
webhookExecutor.QueueLog(
guildConfig,
LogChannelType.ChannelDelete,
embed.Build().GetOrThrow()
);
return Result.Success;
}
}
}

View file

@ -19,8 +19,8 @@ public class ChannelUpdateResponder(
ChannelCache channelCache,
RoleCache roleCache,
UserCache userCache,
WebhookExecutorService webhookExecutor)
: IResponder<IChannelUpdate>
WebhookExecutorService webhookExecutor
) : IResponder<IChannelUpdate>
{
private readonly ILogger _logger = logger.ForContext<ChannelUpdateResponder>();
@ -37,20 +37,26 @@ public class ChannelUpdateResponder(
var guildConfig = await db.GetGuildAsync(evt.GuildID.Value, ct);
var builder = new EmbedBuilder()
.WithTitle(evt.Type switch
{
ChannelType.GuildVoice => "Voice channel edited",
ChannelType.GuildCategory => "Category channel edited",
ChannelType.GuildAnnouncement or ChannelType.GuildText => "Text channel edited",
_ => "Channel edited"
})
.WithTitle(
evt.Type switch
{
ChannelType.GuildVoice => "Voice channel edited",
ChannelType.GuildCategory => "Category channel edited",
ChannelType.GuildAnnouncement or ChannelType.GuildText =>
"Text channel edited",
_ => "Channel edited",
}
)
.WithColour(DiscordUtils.Blue)
.WithFooter($"ID: {evt.ID} | Name: {evt.Name}")
.WithCurrentTimestamp();
if (oldChannel.ParentID != evt.ParentID)
{
var categoryUpdate = CategoryUpdate(oldChannel.ParentID.OrDefault(), evt.ParentID.OrDefault());
var categoryUpdate = CategoryUpdate(
oldChannel.ParentID.OrDefault(),
evt.ParentID.OrDefault()
);
if (!string.IsNullOrWhiteSpace(categoryUpdate))
builder.AddField("Category", categoryUpdate);
}
@ -64,7 +70,8 @@ public class ChannelUpdateResponder(
var newTopic = evt.Topic.OrDefault() ?? "(none)";
var topicField = $"**Before:** {oldTopic}\n\n**After:** {newTopic}";
if (topicField.Length > 1000) topicField = topicField[..1000] + "…";
if (topicField.Length > 1000)
topicField = topicField[..1000] + "…";
builder.AddField("Description", topicField);
}
@ -72,11 +79,19 @@ public class ChannelUpdateResponder(
var oldOverrides = oldChannel.PermissionOverwrites.OrDefault() ?? [];
var newOverrides = evt.PermissionOverwrites.OrDefault() ?? [];
var addedOverrides = newOverrides.Where(o => oldOverrides.All(o2 => o.ID != o2.ID)).ToList();
var removedOverrides = oldOverrides.Where(o => newOverrides.All(o2 => o.ID != o2.ID)).ToList();
var addedOverrides = newOverrides
.Where(o => oldOverrides.All(o2 => o.ID != o2.ID))
.ToList();
var removedOverrides = oldOverrides
.Where(o => newOverrides.All(o2 => o.ID != o2.ID))
.ToList();
// Overrides filtered to ones that exist in both lists, but have different allow or deny values
var editedOverrides = newOverrides.Where(o => oldOverrides.Any(o2 =>
o.ID == o2.ID && (o.Allow.Value != o2.Allow.Value || o.Deny.Value != o2.Deny.Value)));
var editedOverrides = newOverrides.Where(o =>
oldOverrides.Any(o2 =>
o.ID == o2.ID
&& (o.Allow.Value != o2.Allow.Value || o.Deny.Value != o2.Deny.Value)
)
);
if (addedOverrides.Count != 0)
{
@ -90,7 +105,9 @@ public class ChannelUpdateResponder(
}
else
{
addedOverrideNames.Add(roleCache.TryGet(o.ID, out var role) ? role.Name : $"role {o.ID}");
addedOverrideNames.Add(
roleCache.TryGet(o.ID, out var role) ? role.Name : $"role {o.ID}"
);
break;
}
@ -110,7 +127,9 @@ public class ChannelUpdateResponder(
}
else
{
removedOverrideNames.Add(roleCache.TryGet(o.ID, out var role) ? role.Name : $"role {o.ID}");
removedOverrideNames.Add(
roleCache.TryGet(o.ID, out var role) ? role.Name : $"role {o.ID}"
);
break;
}
}
@ -120,9 +139,12 @@ public class ChannelUpdateResponder(
foreach (var overwrite in editedOverrides)
{
var perms = string.Join("\n",
PermissionUpdate(oldOverrides.First(o => o.ID == overwrite.ID), overwrite));
if (string.IsNullOrWhiteSpace(perms)) continue;
var perms = string.Join(
"\n",
PermissionUpdate(oldOverrides.First(o => o.ID == overwrite.ID), overwrite)
);
if (string.IsNullOrWhiteSpace(perms))
continue;
builder.AddField(await OverwriteName(overwrite), perms.Trim());
}
@ -134,19 +156,24 @@ public class ChannelUpdateResponder(
embedFieldValue += $"\u2705 {overwrite.Allow.ToPrettyString()}";
if (overwrite.Deny.GetPermissions().Count != 0)
embedFieldValue += $"\n\n\u274c {overwrite.Deny.ToPrettyString()}";
if (string.IsNullOrWhiteSpace(embedFieldValue)) continue;
if (string.IsNullOrWhiteSpace(embedFieldValue))
continue;
builder.AddField(await OverwriteName(overwrite), embedFieldValue.Trim());
}
// Sometimes we get channel update events for channels that didn't actually have anything loggable change.
// If that happens, there will be no embed fields, so just check for that
if (builder.Fields.Count == 0) return Result.Success;
webhookExecutor.QueueLog(guildConfig, LogChannelType.ChannelUpdate, builder.Build().GetOrThrow());
if (builder.Fields.Count == 0)
return Result.Success;
webhookExecutor.QueueLog(
guildConfig,
LogChannelType.ChannelUpdate,
builder.Build().GetOrThrow()
);
return Result.Success;
}
finally
{
channelCache.Set(evt);
}
@ -172,46 +199,69 @@ public class ChannelUpdateResponder(
: $"Override for role {overwrite.ID}";
case PermissionOverwriteType.Member:
var user = await userCache.GetUserAsync(overwrite.ID);
return user != null ? $"Override for {user.Tag()}" : $"Override for user {overwrite.ID}";
return user != null
? $"Override for {user.Tag()}"
: $"Override for user {overwrite.ID}";
default:
throw new ArgumentOutOfRangeException(nameof(overwrite), overwrite.Type,
"Invalid PermissionOverwriteType");
throw new ArgumentOutOfRangeException(
nameof(overwrite),
overwrite.Type,
"Invalid PermissionOverwriteType"
);
}
}
private static IEnumerable<string> PermissionUpdate(IPermissionOverwrite oldOverwrite,
IPermissionOverwrite newOverwrite)
private static IEnumerable<string> PermissionUpdate(
IPermissionOverwrite oldOverwrite,
IPermissionOverwrite newOverwrite
)
{
foreach (var perm in Enum.GetValues<DiscordPermission>())
{
if (newOverwrite.Allow.HasPermission(perm) && !oldOverwrite.Allow.HasPermission(perm) &&
!oldOverwrite.Deny.HasPermission(perm))
if (
newOverwrite.Allow.HasPermission(perm)
&& !oldOverwrite.Allow.HasPermission(perm)
&& !oldOverwrite.Deny.HasPermission(perm)
)
{
yield return $"\u2b1c \u279c \u2705 {perm.Humanize(LetterCasing.Title)}";
}
else if (newOverwrite.Deny.HasPermission(perm) && !oldOverwrite.Allow.HasPermission(perm) &&
!oldOverwrite.Deny.HasPermission(perm))
else if (
newOverwrite.Deny.HasPermission(perm)
&& !oldOverwrite.Allow.HasPermission(perm)
&& !oldOverwrite.Deny.HasPermission(perm)
)
{
yield return $"\u2b1c \u279c \u274c {perm.Humanize(LetterCasing.Title)}";
}
else if (newOverwrite.Allow.HasPermission(perm) && oldOverwrite.Deny.HasPermission(perm))
else if (
newOverwrite.Allow.HasPermission(perm) && oldOverwrite.Deny.HasPermission(perm)
)
{
yield return $"\u274c \u279c \u2705 {perm.Humanize(LetterCasing.Title)}";
}
else if (newOverwrite.Deny.HasPermission(perm) && oldOverwrite.Allow.HasPermission(perm))
else if (
newOverwrite.Deny.HasPermission(perm) && oldOverwrite.Allow.HasPermission(perm)
)
{
yield return $"\u2705 \u279c \u274c {perm.Humanize(LetterCasing.Title)}";
}
else if (!newOverwrite.Allow.HasPermission(perm) && !newOverwrite.Deny.HasPermission(perm) &&
oldOverwrite.Allow.HasPermission(perm))
else if (
!newOverwrite.Allow.HasPermission(perm)
&& !newOverwrite.Deny.HasPermission(perm)
&& oldOverwrite.Allow.HasPermission(perm)
)
{
yield return $"\u2705 \u279c \u2b1c {perm.Humanize(LetterCasing.Title)}";
}
else if (!newOverwrite.Allow.HasPermission(perm) && !newOverwrite.Deny.HasPermission(perm) &&
oldOverwrite.Allow.HasPermission(perm))
else if (
!newOverwrite.Allow.HasPermission(perm)
&& !newOverwrite.Deny.HasPermission(perm)
&& oldOverwrite.Allow.HasPermission(perm)
)
{
yield return $"\u274c \u279c \u2b1c {perm.Humanize(LetterCasing.Title)}";
}
}
}
}
}