1
0
Fork 1
mirror of https://github.com/TeamOctolings/Octobot.git synced 2025-04-20 00:43:36 +03:00

Merge branch 'master' into 40-rename-users-who-attempt-to-hoist-themselves

This commit is contained in:
Octol1ttle 2023-07-24 17:03:49 +05:00
commit 65a1fc1c81
Signed by: Octol1ttle
GPG key ID: B77C34313AEE1FFF
12 changed files with 61 additions and 55 deletions

View file

@ -23,10 +23,10 @@
<PackageReference Include="Humanizer.Core.ru" Version="2.14.1"/> <PackageReference Include="Humanizer.Core.ru" Version="2.14.1"/>
<PackageReference Include="JetBrains.Annotations" Version="2023.2.0"/> <PackageReference Include="JetBrains.Annotations" Version="2023.2.0"/>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.1"/> <PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.1"/>
<PackageReference Include="Remora.Discord.Caching" Version="36.0.0"/> <PackageReference Include="Remora.Discord.Caching" Version="37.0.0"/>
<PackageReference Include="Remora.Discord.Extensions" Version="5.3.1"/> <PackageReference Include="Remora.Discord.Extensions" Version="5.3.2"/>
<PackageReference Include="Remora.Discord.Hosting" Version="6.0.6"/> <PackageReference Include="Remora.Discord.Hosting" Version="6.0.7"/>
<PackageReference Include="Remora.Discord.Interactivity" Version="4.5.0"/> <PackageReference Include="Remora.Discord.Interactivity" Version="4.5.1"/>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Update="locale\Messages.resx"> <EmbeddedResource Update="locale\Messages.resx">

View file

@ -57,7 +57,7 @@ public class AboutCommandGroup : CommandGroup {
if (!currentUserResult.IsDefined(out var currentUser)) if (!currentUserResult.IsDefined(out var currentUser))
return Result.FromError(currentUserResult); return Result.FromError(currentUserResult);
var cfg = await _dataService.GetSettings(guildId.Value, CancellationToken); var cfg = await _dataService.GetSettings(guildId, CancellationToken);
Messages.Culture = GuildSettings.Language.Get(cfg); Messages.Culture = GuildSettings.Language.Get(cfg);
return await SendAboutBotAsync(currentUser, CancellationToken); return await SendAboutBotAsync(currentUser, CancellationToken);

View file

@ -77,10 +77,10 @@ public class BanCommandGroup : CommandGroup {
var currentUserResult = await _userApi.GetCurrentUserAsync(CancellationToken); var currentUserResult = await _userApi.GetCurrentUserAsync(CancellationToken);
if (!currentUserResult.IsDefined(out var currentUser)) if (!currentUserResult.IsDefined(out var currentUser))
return Result.FromError(currentUserResult); return Result.FromError(currentUserResult);
var userResult = await _userApi.GetUserAsync(userId.Value, CancellationToken); var userResult = await _userApi.GetUserAsync(userId, CancellationToken);
if (!userResult.IsDefined(out var user)) if (!userResult.IsDefined(out var user))
return Result.FromError(userResult); return Result.FromError(userResult);
var guildResult = await _guildApi.GetGuildAsync(guildId.Value, ct: CancellationToken); var guildResult = await _guildApi.GetGuildAsync(guildId, ct: CancellationToken);
if (!guildResult.IsDefined(out var guild)) if (!guildResult.IsDefined(out var guild))
return Result.FromError(guildResult); return Result.FromError(guildResult);
@ -88,7 +88,7 @@ public class BanCommandGroup : CommandGroup {
Messages.Culture = GuildSettings.Language.Get(data.Settings); Messages.Culture = GuildSettings.Language.Get(data.Settings);
return await BanUserAsync( return await BanUserAsync(
target, reason, duration, guild, data, channelId.Value, user, currentUser, CancellationToken); target, reason, duration, guild, data, channelId, user, currentUser, CancellationToken);
} }
private async Task<Result> BanUserAsync( private async Task<Result> BanUserAsync(
@ -153,7 +153,7 @@ public class BanCommandGroup : CommandGroup {
.WithColour(ColorsList.Green).Build(); .WithColour(ColorsList.Green).Build();
var logResult = _utility.LogActionAsync( var logResult = _utility.LogActionAsync(
data.Settings, channelId, user, title, description, target, ct); data.Settings, channelId, user, title, description, target, ColorsList.Red, ct: ct);
if (!logResult.IsSuccess) if (!logResult.IsSuccess)
return Result.FromError(logResult.Error); return Result.FromError(logResult.Error);
@ -193,15 +193,15 @@ public class BanCommandGroup : CommandGroup {
if (!currentUserResult.IsDefined(out var currentUser)) if (!currentUserResult.IsDefined(out var currentUser))
return Result.FromError(currentUserResult); return Result.FromError(currentUserResult);
// Needed to get the tag and avatar // Needed to get the tag and avatar
var userResult = await _userApi.GetUserAsync(userId.Value, CancellationToken); var userResult = await _userApi.GetUserAsync(userId, CancellationToken);
if (!userResult.IsDefined(out var user)) if (!userResult.IsDefined(out var user))
return Result.FromError(userResult); return Result.FromError(userResult);
var data = await _dataService.GetData(guildId.Value, CancellationToken); var data = await _dataService.GetData(guildId, CancellationToken);
Messages.Culture = GuildSettings.Language.Get(data.Settings); Messages.Culture = GuildSettings.Language.Get(data.Settings);
return await UnbanUserAsync( return await UnbanUserAsync(
target, reason, guildId.Value, data, channelId.Value, user, currentUser, CancellationToken); target, reason, guildId, data, channelId, user, currentUser, CancellationToken);
} }
private async Task<Result> UnbanUserAsync( private async Task<Result> UnbanUserAsync(
@ -227,7 +227,8 @@ public class BanCommandGroup : CommandGroup {
var title = string.Format(Messages.UserUnbanned, target.GetTag()); var title = string.Format(Messages.UserUnbanned, target.GetTag());
var description = string.Format(Messages.DescriptionActionReason, reason); var description = string.Format(Messages.DescriptionActionReason, reason);
var logResult = _utility.LogActionAsync(data.Settings, channelId, user, title, description, target, ct); var logResult = _utility.LogActionAsync(
data.Settings, channelId, user, title, description, target, ColorsList.Green, ct: ct);
if (!logResult.IsSuccess) if (!logResult.IsSuccess)
return Result.FromError(logResult.Error); return Result.FromError(logResult.Error);

View file

@ -65,10 +65,10 @@ public class ClearCommandGroup : CommandGroup {
new ArgumentNullError(nameof(_context), "Unable to retrieve necessary IDs from command context")); new ArgumentNullError(nameof(_context), "Unable to retrieve necessary IDs from command context"));
var messagesResult = await _channelApi.GetChannelMessagesAsync( var messagesResult = await _channelApi.GetChannelMessagesAsync(
channelId.Value, limit: amount + 1, ct: CancellationToken); channelId, limit: amount + 1, ct: CancellationToken);
if (!messagesResult.IsDefined(out var messages)) if (!messagesResult.IsDefined(out var messages))
return Result.FromError(messagesResult); return Result.FromError(messagesResult);
var userResult = await _userApi.GetUserAsync(userId.Value, CancellationToken); var userResult = await _userApi.GetUserAsync(userId, CancellationToken);
if (!userResult.IsDefined(out var user)) if (!userResult.IsDefined(out var user))
return Result.FromError(userResult); return Result.FromError(userResult);
// The current user's avatar is used when sending messages // The current user's avatar is used when sending messages
@ -76,10 +76,10 @@ public class ClearCommandGroup : CommandGroup {
if (!currentUserResult.IsDefined(out var currentUser)) if (!currentUserResult.IsDefined(out var currentUser))
return Result.FromError(currentUserResult); return Result.FromError(currentUserResult);
var data = await _dataService.GetData(guildId.Value, CancellationToken); var data = await _dataService.GetData(guildId, CancellationToken);
Messages.Culture = GuildSettings.Language.Get(data.Settings); Messages.Culture = GuildSettings.Language.Get(data.Settings);
return await ClearMessagesAsync(amount, data, channelId.Value, messages, user, currentUser, CancellationToken); return await ClearMessagesAsync(amount, data, channelId, messages, user, currentUser, CancellationToken);
} }
private async Task<Result> ClearMessagesAsync( private async Task<Result> ClearMessagesAsync(
@ -103,7 +103,7 @@ public class ClearCommandGroup : CommandGroup {
return Result.FromError(deleteResult.Error); return Result.FromError(deleteResult.Error);
var logResult = _utility.LogActionAsync( var logResult = _utility.LogActionAsync(
data.Settings, channelId, user, title, description, currentUser, ct); data.Settings, channelId, user, title, description, currentUser, ColorsList.Red, false, ct);
if (!logResult.IsSuccess) if (!logResult.IsSuccess)
return Result.FromError(logResult.Error); return Result.FromError(logResult.Error);

View file

@ -72,17 +72,17 @@ public class KickCommandGroup : CommandGroup {
var currentUserResult = await _userApi.GetCurrentUserAsync(CancellationToken); var currentUserResult = await _userApi.GetCurrentUserAsync(CancellationToken);
if (!currentUserResult.IsDefined(out var currentUser)) if (!currentUserResult.IsDefined(out var currentUser))
return Result.FromError(currentUserResult); return Result.FromError(currentUserResult);
var userResult = await _userApi.GetUserAsync(userId.Value, CancellationToken); var userResult = await _userApi.GetUserAsync(userId, CancellationToken);
if (!userResult.IsDefined(out var user)) if (!userResult.IsDefined(out var user))
return Result.FromError(userResult); return Result.FromError(userResult);
var guildResult = await _guildApi.GetGuildAsync(guildId.Value, ct: CancellationToken); var guildResult = await _guildApi.GetGuildAsync(guildId, ct: CancellationToken);
if (!guildResult.IsDefined(out var guild)) if (!guildResult.IsDefined(out var guild))
return Result.FromError(guildResult); return Result.FromError(guildResult);
var data = await _dataService.GetData(guildId.Value, CancellationToken); var data = await _dataService.GetData(guildId, CancellationToken);
Messages.Culture = GuildSettings.Language.Get(data.Settings); Messages.Culture = GuildSettings.Language.Get(data.Settings);
var memberResult = await _guildApi.GetGuildMemberAsync(guildId.Value, target.ID, CancellationToken); var memberResult = await _guildApi.GetGuildMemberAsync(guildId, target.ID, CancellationToken);
if (!memberResult.IsSuccess) { if (!memberResult.IsSuccess) {
var embed = new EmbedBuilder().WithSmallTitle(Messages.UserNotFoundShort, currentUser) var embed = new EmbedBuilder().WithSmallTitle(Messages.UserNotFoundShort, currentUser)
.WithColour(ColorsList.Red).Build(); .WithColour(ColorsList.Red).Build();
@ -90,7 +90,7 @@ public class KickCommandGroup : CommandGroup {
return await _feedbackService.SendContextualEmbedResultAsync(embed, CancellationToken); return await _feedbackService.SendContextualEmbedResultAsync(embed, CancellationToken);
} }
return await KickUserAsync(target, reason, guild, channelId.Value, data, user, currentUser, CancellationToken); return await KickUserAsync(target, reason, guild, channelId, data, user, currentUser, CancellationToken);
} }
private async Task<Result> KickUserAsync( private async Task<Result> KickUserAsync(
@ -133,7 +133,7 @@ public class KickCommandGroup : CommandGroup {
var title = string.Format(Messages.UserKicked, target.GetTag()); var title = string.Format(Messages.UserKicked, target.GetTag());
var description = string.Format(Messages.DescriptionActionReason, reason); var description = string.Format(Messages.DescriptionActionReason, reason);
var logResult = _utility.LogActionAsync( var logResult = _utility.LogActionAsync(
data.Settings, channelId, user, title, description, target, ct); data.Settings, channelId, user, title, description, target, ColorsList.Red, ct: ct);
if (!logResult.IsSuccess) if (!logResult.IsSuccess)
return Result.FromError(logResult.Error); return Result.FromError(logResult.Error);

View file

@ -76,14 +76,14 @@ public class MuteCommandGroup : CommandGroup {
if (!currentUserResult.IsDefined(out var currentUser)) if (!currentUserResult.IsDefined(out var currentUser))
return Result.FromError(currentUserResult); return Result.FromError(currentUserResult);
var userResult = await _userApi.GetUserAsync(userId.Value, CancellationToken); var userResult = await _userApi.GetUserAsync(userId, CancellationToken);
if (!userResult.IsDefined(out var user)) if (!userResult.IsDefined(out var user))
return Result.FromError(userResult); return Result.FromError(userResult);
var data = await _dataService.GetData(guildId.Value, CancellationToken); var data = await _dataService.GetData(guildId, CancellationToken);
Messages.Culture = GuildSettings.Language.Get(data.Settings); Messages.Culture = GuildSettings.Language.Get(data.Settings);
var memberResult = await _guildApi.GetGuildMemberAsync(guildId.Value, target.ID, CancellationToken); var memberResult = await _guildApi.GetGuildMemberAsync(guildId, target.ID, CancellationToken);
if (!memberResult.IsSuccess) { if (!memberResult.IsSuccess) {
var embed = new EmbedBuilder().WithSmallTitle(Messages.UserNotFoundShort, currentUser) var embed = new EmbedBuilder().WithSmallTitle(Messages.UserNotFoundShort, currentUser)
.WithColour(ColorsList.Red).Build(); .WithColour(ColorsList.Red).Build();
@ -92,7 +92,7 @@ public class MuteCommandGroup : CommandGroup {
} }
return await MuteUserAsync( return await MuteUserAsync(
target, reason, duration, guildId.Value, data, channelId.Value, user, currentUser, CancellationToken); target, reason, duration, guildId, data, channelId, user, currentUser, CancellationToken);
} }
private async Task<Result> MuteUserAsync( private async Task<Result> MuteUserAsync(
@ -125,7 +125,7 @@ public class MuteCommandGroup : CommandGroup {
Messages.DescriptionActionExpiresAt, Markdown.Timestamp(until))).ToString(); Messages.DescriptionActionExpiresAt, Markdown.Timestamp(until))).ToString();
var logResult = _utility.LogActionAsync( var logResult = _utility.LogActionAsync(
data.Settings, channelId, user, title, description, target, ct); data.Settings, channelId, user, title, description, target, ColorsList.Red, ct: ct);
if (!logResult.IsSuccess) if (!logResult.IsSuccess)
return Result.FromError(logResult.Error); return Result.FromError(logResult.Error);
@ -171,14 +171,14 @@ public class MuteCommandGroup : CommandGroup {
return Result.FromError(currentUserResult); return Result.FromError(currentUserResult);
// Needed to get the tag and avatar // Needed to get the tag and avatar
var userResult = await _userApi.GetUserAsync(userId.Value, CancellationToken); var userResult = await _userApi.GetUserAsync(userId, CancellationToken);
if (!userResult.IsDefined(out var user)) if (!userResult.IsDefined(out var user))
return Result.FromError(userResult); return Result.FromError(userResult);
var data = await _dataService.GetData(guildId.Value, CancellationToken); var data = await _dataService.GetData(guildId, CancellationToken);
Messages.Culture = GuildSettings.Language.Get(data.Settings); Messages.Culture = GuildSettings.Language.Get(data.Settings);
var memberResult = await _guildApi.GetGuildMemberAsync(guildId.Value, target.ID, CancellationToken); var memberResult = await _guildApi.GetGuildMemberAsync(guildId, target.ID, CancellationToken);
if (!memberResult.IsSuccess) { if (!memberResult.IsSuccess) {
var embed = new EmbedBuilder().WithSmallTitle(Messages.UserNotFoundShort, currentUser) var embed = new EmbedBuilder().WithSmallTitle(Messages.UserNotFoundShort, currentUser)
.WithColour(ColorsList.Red).Build(); .WithColour(ColorsList.Red).Build();
@ -187,7 +187,7 @@ public class MuteCommandGroup : CommandGroup {
} }
return await UnmuteUserAsync( return await UnmuteUserAsync(
target, reason, guildId.Value, data, channelId.Value, user, currentUser, CancellationToken); target, reason, guildId, data, channelId, user, currentUser, CancellationToken);
} }
private async Task<Result> UnmuteUserAsync( private async Task<Result> UnmuteUserAsync(
@ -215,7 +215,7 @@ public class MuteCommandGroup : CommandGroup {
var title = string.Format(Messages.UserUnmuted, target.GetTag()); var title = string.Format(Messages.UserUnmuted, target.GetTag());
var description = string.Format(Messages.DescriptionActionReason, reason); var description = string.Format(Messages.DescriptionActionReason, reason);
var logResult = _utility.LogActionAsync( var logResult = _utility.LogActionAsync(
data.Settings, channelId, user, title, description, target, ct); data.Settings, channelId, user, title, description, target, ColorsList.Green, ct: ct);
if (!logResult.IsSuccess) if (!logResult.IsSuccess)
return Result.FromError(logResult.Error); return Result.FromError(logResult.Error);

View file

@ -60,10 +60,10 @@ public class PingCommandGroup : CommandGroup {
if (!currentUserResult.IsDefined(out var currentUser)) if (!currentUserResult.IsDefined(out var currentUser))
return Result.FromError(currentUserResult); return Result.FromError(currentUserResult);
var cfg = await _dataService.GetSettings(guildId.Value, CancellationToken); var cfg = await _dataService.GetSettings(guildId, CancellationToken);
Messages.Culture = GuildSettings.Language.Get(cfg); Messages.Culture = GuildSettings.Language.Get(cfg);
return await SendLatencyAsync(channelId.Value, currentUser, CancellationToken); return await SendLatencyAsync(channelId, currentUser, CancellationToken);
} }
private async Task<Result> SendLatencyAsync( private async Task<Result> SendLatencyAsync(

View file

@ -55,14 +55,14 @@ public class RemindCommandGroup : CommandGroup {
return Result.FromError( return Result.FromError(
new ArgumentNullError(nameof(_context), "Unable to retrieve necessary IDs from command context")); new ArgumentNullError(nameof(_context), "Unable to retrieve necessary IDs from command context"));
var userResult = await _userApi.GetUserAsync(userId.Value, CancellationToken); var userResult = await _userApi.GetUserAsync(userId, CancellationToken);
if (!userResult.IsDefined(out var user)) if (!userResult.IsDefined(out var user))
return Result.FromError(userResult); return Result.FromError(userResult);
var data = await _dataService.GetData(guildId.Value, CancellationToken); var data = await _dataService.GetData(guildId, CancellationToken);
Messages.Culture = GuildSettings.Language.Get(data.Settings); Messages.Culture = GuildSettings.Language.Get(data.Settings);
return await AddReminderAsync(@in, message, data, channelId.Value, user, CancellationToken); return await AddReminderAsync(@in, message, data, channelId, user, CancellationToken);
} }
private async Task<Result> AddReminderAsync( private async Task<Result> AddReminderAsync(

View file

@ -77,7 +77,7 @@ public class SettingsCommandGroup : CommandGroup {
if (!currentUserResult.IsDefined(out var currentUser)) if (!currentUserResult.IsDefined(out var currentUser))
return Result.FromError(currentUserResult); return Result.FromError(currentUserResult);
var cfg = await _dataService.GetSettings(guildId.Value, CancellationToken); var cfg = await _dataService.GetSettings(guildId, CancellationToken);
Messages.Culture = GuildSettings.Language.Get(cfg); Messages.Culture = GuildSettings.Language.Get(cfg);
return await SendSettingsListAsync(cfg, currentUser, CancellationToken); return await SendSettingsListAsync(cfg, currentUser, CancellationToken);
@ -125,7 +125,7 @@ public class SettingsCommandGroup : CommandGroup {
if (!currentUserResult.IsDefined(out var currentUser)) if (!currentUserResult.IsDefined(out var currentUser))
return Result.FromError(currentUserResult); return Result.FromError(currentUserResult);
var data = await _dataService.GetData(guildId.Value, CancellationToken); var data = await _dataService.GetData(guildId, CancellationToken);
Messages.Culture = GuildSettings.Language.Get(data.Settings); Messages.Culture = GuildSettings.Language.Get(data.Settings);
return await EditSettingAsync(setting, value, data, currentUser, CancellationToken); return await EditSettingAsync(setting, value, data, currentUser, CancellationToken);

View file

@ -1,11 +1,12 @@
using System.Text.Json.Nodes; using System.Text.Json.Nodes;
using System.Text.RegularExpressions;
using Remora.Discord.Extensions.Formatting; using Remora.Discord.Extensions.Formatting;
using Remora.Rest.Core; using Remora.Rest.Core;
using Remora.Results; using Remora.Results;
namespace Boyfriend.Data.Options; namespace Boyfriend.Data.Options;
public class SnowflakeOption : Option<Snowflake> { public partial class SnowflakeOption : Option<Snowflake> {
public SnowflakeOption(string name) : base(name, 0UL.ToSnowflake()) { } public SnowflakeOption(string name) : base(name, 0UL.ToSnowflake()) { }
public override string Display(JsonNode settings) { public override string Display(JsonNode settings) {
@ -18,10 +19,13 @@ public class SnowflakeOption : Option<Snowflake> {
} }
public override Result Set(JsonNode settings, string from) { public override Result Set(JsonNode settings, string from) {
if (!ulong.TryParse(from, out var parsed)) if (!ulong.TryParse(NonNumbers().Replace(from, ""), out var parsed))
return Result.FromError(new ArgumentInvalidError(nameof(from), Messages.InvalidSettingValue)); return Result.FromError(new ArgumentInvalidError(nameof(from), Messages.InvalidSettingValue));
settings[Name] = parsed; settings[Name] = parsed;
return Result.FromSuccess(); return Result.FromSuccess();
} }
[GeneratedRegex("[^0-9]")]
private static partial Regex NonNumbers();
} }

View file

@ -1,4 +1,3 @@
using System.Diagnostics.CodeAnalysis;
using System.Net; using System.Net;
using System.Text; using System.Text;
using DiffPlex.DiffBuilder.Model; using DiffPlex.DiffBuilder.Model;
@ -182,11 +181,10 @@ public static class Extensions {
} }
public static bool TryGetContextIDs( public static bool TryGetContextIDs(
this ICommandContext context, [NotNullWhen(true)] out Snowflake? guildId, this ICommandContext context, out Snowflake guildId,
[NotNullWhen(true)] out Snowflake? channelId, [NotNullWhen(true)] out Snowflake? userId) { out Snowflake channelId, out Snowflake userId) {
guildId = null; channelId = default;
channelId = null; userId = default;
userId = null;
return context.TryGetGuildID(out guildId) return context.TryGetGuildID(out guildId)
&& context.TryGetChannelID(out channelId) && context.TryGetChannelID(out channelId)
&& context.TryGetUserID(out userId); && context.TryGetUserID(out userId);

View file

@ -1,3 +1,4 @@
using System.Drawing;
using System.Text; using System.Text;
using System.Text.Json.Nodes; using System.Text.Json.Nodes;
using Boyfriend.Data; using Boyfriend.Data;
@ -158,11 +159,13 @@ public class UtilityService : IHostedService {
/// <param name="title">The title for the embed.</param> /// <param name="title">The title for the embed.</param>
/// <param name="description">The description of the embed.</param> /// <param name="description">The description of the embed.</param>
/// <param name="avatar">The user whose avatar will be displayed next to the <paramref name="title" /> of the embed.</param> /// <param name="avatar">The user whose avatar will be displayed next to the <paramref name="title" /> of the embed.</param>
/// <param name="color">The color of the embed.</param>
/// <param name="isPublic">Whether or not the embed should be sent in <see cref="GuildSettings.PublicFeedbackChannel"/></param>
/// <param name="ct">The cancellation token for this operation.</param> /// <param name="ct">The cancellation token for this operation.</param>
/// <returns></returns> /// <returns>A result which has succeeded.</returns>
public Result LogActionAsync( public Result LogActionAsync(
JsonNode cfg, Snowflake channelId, IUser user, string title, string description, IUser avatar, JsonNode cfg, Snowflake channelId, IUser user, string title, string description, IUser avatar,
CancellationToken ct = default) { Color color, bool isPublic = true, CancellationToken ct = default) {
var publicChannel = GuildSettings.PublicFeedbackChannel.Get(cfg); var publicChannel = GuildSettings.PublicFeedbackChannel.Get(cfg);
var privateChannel = GuildSettings.PrivateFeedbackChannel.Get(cfg); var privateChannel = GuildSettings.PrivateFeedbackChannel.Get(cfg);
if (GuildSettings.PublicFeedbackChannel.Get(cfg).EmptyOrEqualTo(channelId) if (GuildSettings.PublicFeedbackChannel.Get(cfg).EmptyOrEqualTo(channelId)
@ -173,7 +176,7 @@ public class UtilityService : IHostedService {
.WithDescription(description) .WithDescription(description)
.WithActionFooter(user) .WithActionFooter(user)
.WithCurrentTimestamp() .WithCurrentTimestamp()
.WithColour(ColorsList.Green) .WithColour(color)
.Build(); .Build();
if (!logEmbed.IsDefined(out var logBuilt)) if (!logEmbed.IsDefined(out var logBuilt))
@ -182,12 +185,12 @@ public class UtilityService : IHostedService {
var builtArray = new[] { logBuilt }; var builtArray = new[] { logBuilt };
// Not awaiting to reduce response time // Not awaiting to reduce response time
if (publicChannel != channelId.Value) if (isPublic && publicChannel != channelId)
_ = _channelApi.CreateMessageAsync( _ = _channelApi.CreateMessageAsync(
publicChannel, embeds: builtArray, publicChannel, embeds: builtArray,
ct: ct); ct: ct);
if (privateChannel != publicChannel if (privateChannel != publicChannel
&& privateChannel != channelId.Value) && privateChannel != channelId)
_ = _channelApi.CreateMessageAsync( _ = _channelApi.CreateMessageAsync(
privateChannel, embeds: builtArray, privateChannel, embeds: builtArray,
ct: ct); ct: ct);