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:
commit
65a1fc1c81
12 changed files with 61 additions and 55 deletions
|
@ -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">
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Add table
Reference in a new issue