mirror of
https://github.com/TeamOctolings/Octobot.git
synced 2025-04-20 00:43:36 +03:00
Remora.Discord part 63 out of 63
This commit is contained in:
parent
eaf3ddf77e
commit
a727a9d8bb
12 changed files with 68 additions and 37 deletions
|
@ -16,7 +16,7 @@ using Remora.Results;
|
||||||
namespace Boyfriend.Commands;
|
namespace Boyfriend.Commands;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handles the command to show information about this bot: /about
|
/// Handles the command to show information about this bot: /about.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class AboutCommandGroup : CommandGroup {
|
public class AboutCommandGroup : CommandGroup {
|
||||||
private static readonly string[] Developers = { "Octol1ttle", "mctaylors", "neroduckale" };
|
private static readonly string[] Developers = { "Octol1ttle", "mctaylors", "neroduckale" };
|
||||||
|
@ -41,7 +41,7 @@ public class AboutCommandGroup : CommandGroup {
|
||||||
/// A feedback sending result which may or may not have succeeded.
|
/// A feedback sending result which may or may not have succeeded.
|
||||||
/// </returns>
|
/// </returns>
|
||||||
[Command("about")]
|
[Command("about")]
|
||||||
[Description("отображает список разработчиков")]
|
[Description("Shows Boyfriend's developers")]
|
||||||
public async Task<Result> SendAboutBotAsync() {
|
public async Task<Result> SendAboutBotAsync() {
|
||||||
if (!_context.TryGetContextIDs(out var guildId, out _, out _))
|
if (!_context.TryGetContextIDs(out var guildId, out _, out _))
|
||||||
return Result.FromError(
|
return Result.FromError(
|
||||||
|
@ -59,8 +59,8 @@ public class AboutCommandGroup : CommandGroup {
|
||||||
builder.AppendLine($"@{dev} — {$"AboutDeveloper@{dev}".Localized()}");
|
builder.AppendLine($"@{dev} — {$"AboutDeveloper@{dev}".Localized()}");
|
||||||
|
|
||||||
builder.AppendLine()
|
builder.AppendLine()
|
||||||
.AppendLine(Markdown.Bold(Messages.AboutTitleWiki))
|
.AppendLine(Markdown.Bold(Messages.AboutTitleWiki))
|
||||||
.AppendLine("https://github.com/TeamOctolings/Boyfriend/wiki");
|
.AppendLine("https://github.com/TeamOctolings/Boyfriend/wiki");
|
||||||
|
|
||||||
var embed = new EmbedBuilder().WithSmallTitle(Messages.AboutBot, currentUser)
|
var embed = new EmbedBuilder().WithSmallTitle(Messages.AboutBot, currentUser)
|
||||||
.WithDescription(builder.ToString())
|
.WithDescription(builder.ToString())
|
||||||
|
|
|
@ -61,11 +61,11 @@ public class BanCommandGroup : CommandGroup {
|
||||||
[RequireContext(ChannelContext.Guild)]
|
[RequireContext(ChannelContext.Guild)]
|
||||||
[RequireDiscordPermission(DiscordPermission.BanMembers)]
|
[RequireDiscordPermission(DiscordPermission.BanMembers)]
|
||||||
[RequireBotDiscordPermissions(DiscordPermission.BanMembers)]
|
[RequireBotDiscordPermissions(DiscordPermission.BanMembers)]
|
||||||
[Description("банит юзера")]
|
[Description("Ban user")]
|
||||||
public async Task<Result> BanUserAsync(
|
public async Task<Result> BanUserAsync(
|
||||||
[Description("юзер кого банить")] IUser target,
|
[Description("User to ban")] IUser target,
|
||||||
[Description("причина зачем банить")] string reason,
|
[Description("Ban reason")] string reason,
|
||||||
[Description("продолжительность бана")]
|
[Description("Ban duration")]
|
||||||
TimeSpan? duration = null) {
|
TimeSpan? duration = null) {
|
||||||
if (!_context.TryGetContextIDs(out var guildId, out var channelId, out var userId))
|
if (!_context.TryGetContextIDs(out var guildId, out var channelId, out var userId))
|
||||||
return Result.FromError(
|
return Result.FromError(
|
||||||
|
@ -197,10 +197,10 @@ public class BanCommandGroup : CommandGroup {
|
||||||
[RequireContext(ChannelContext.Guild)]
|
[RequireContext(ChannelContext.Guild)]
|
||||||
[RequireDiscordPermission(DiscordPermission.BanMembers)]
|
[RequireDiscordPermission(DiscordPermission.BanMembers)]
|
||||||
[RequireBotDiscordPermissions(DiscordPermission.BanMembers)]
|
[RequireBotDiscordPermissions(DiscordPermission.BanMembers)]
|
||||||
[Description("разбанит юзера")]
|
[Description("Unban user")]
|
||||||
public async Task<Result> UnbanUserAsync(
|
public async Task<Result> UnbanUserAsync(
|
||||||
[Description("юзер кого разбанить")] IUser target,
|
[Description("User to unban")] IUser target,
|
||||||
[Description("причина зачем разбанить")]
|
[Description("Unban reason")]
|
||||||
string reason) {
|
string reason) {
|
||||||
if (!_context.TryGetContextIDs(out var guildId, out var channelId, out var userId))
|
if (!_context.TryGetContextIDs(out var guildId, out var channelId, out var userId))
|
||||||
return Result.FromError(
|
return Result.FromError(
|
||||||
|
|
|
@ -51,9 +51,9 @@ public class ClearCommandGroup : CommandGroup {
|
||||||
[RequireContext(ChannelContext.Guild)]
|
[RequireContext(ChannelContext.Guild)]
|
||||||
[RequireDiscordPermission(DiscordPermission.ManageMessages)]
|
[RequireDiscordPermission(DiscordPermission.ManageMessages)]
|
||||||
[RequireBotDiscordPermissions(DiscordPermission.ManageMessages)]
|
[RequireBotDiscordPermissions(DiscordPermission.ManageMessages)]
|
||||||
[Description("удаляет сообщения")]
|
[Description("Remove multiple messages")]
|
||||||
public async Task<Result> ClearMessagesAsync(
|
public async Task<Result> ClearMessagesAsync(
|
||||||
[Description("сколько удалять")] [MinValue(2)] [MaxValue(100)]
|
[Description("Number of messages to remove (2-100)")] [MinValue(2)] [MaxValue(100)]
|
||||||
int amount) {
|
int amount) {
|
||||||
if (!_context.TryGetContextIDs(out var guildId, out var channelId, out var userId))
|
if (!_context.TryGetContextIDs(out var guildId, out var channelId, out var userId))
|
||||||
return Result.FromError(
|
return Result.FromError(
|
||||||
|
|
|
@ -57,10 +57,10 @@ public class KickCommandGroup : CommandGroup {
|
||||||
[RequireContext(ChannelContext.Guild)]
|
[RequireContext(ChannelContext.Guild)]
|
||||||
[RequireDiscordPermission(DiscordPermission.KickMembers)]
|
[RequireDiscordPermission(DiscordPermission.KickMembers)]
|
||||||
[RequireBotDiscordPermissions(DiscordPermission.KickMembers)]
|
[RequireBotDiscordPermissions(DiscordPermission.KickMembers)]
|
||||||
[Description("кикает юзера")]
|
[Description("Kick member")]
|
||||||
public async Task<Result> KickUserAsync(
|
public async Task<Result> KickUserAsync(
|
||||||
[Description("юзер кого кикать")] IUser target,
|
[Description("Member to kick")] IUser target,
|
||||||
[Description("причина зачем кикать")] string reason) {
|
[Description("Kick reason")] string reason) {
|
||||||
if (!_context.TryGetContextIDs(out var guildId, out var channelId, out var userId))
|
if (!_context.TryGetContextIDs(out var guildId, out var channelId, out var userId))
|
||||||
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"));
|
||||||
|
|
|
@ -61,11 +61,11 @@ public class MuteCommandGroup : CommandGroup {
|
||||||
[RequireContext(ChannelContext.Guild)]
|
[RequireContext(ChannelContext.Guild)]
|
||||||
[RequireDiscordPermission(DiscordPermission.ModerateMembers)]
|
[RequireDiscordPermission(DiscordPermission.ModerateMembers)]
|
||||||
[RequireBotDiscordPermissions(DiscordPermission.ModerateMembers)]
|
[RequireBotDiscordPermissions(DiscordPermission.ModerateMembers)]
|
||||||
[Description("глушит юзера")]
|
[Description("Mute member")]
|
||||||
public async Task<Result> MuteUserAsync(
|
public async Task<Result> MuteUserAsync(
|
||||||
[Description("юзер кого глушить")] IUser target,
|
[Description("Member to mute")] IUser target,
|
||||||
[Description("причина зачем глушить")] string reason,
|
[Description("Mute reason")] string reason,
|
||||||
[Description("продолжительность мута")]
|
[Description("Mute duration")]
|
||||||
TimeSpan duration) {
|
TimeSpan duration) {
|
||||||
if (!_context.TryGetContextIDs(out var guildId, out var channelId, out var userId))
|
if (!_context.TryGetContextIDs(out var guildId, out var channelId, out var userId))
|
||||||
return Result.FromError(
|
return Result.FromError(
|
||||||
|
@ -173,11 +173,11 @@ public class MuteCommandGroup : CommandGroup {
|
||||||
[RequireContext(ChannelContext.Guild)]
|
[RequireContext(ChannelContext.Guild)]
|
||||||
[RequireDiscordPermission(DiscordPermission.ModerateMembers)]
|
[RequireDiscordPermission(DiscordPermission.ModerateMembers)]
|
||||||
[RequireBotDiscordPermissions(DiscordPermission.ModerateMembers)]
|
[RequireBotDiscordPermissions(DiscordPermission.ModerateMembers)]
|
||||||
[Description("разрешает юзеру снова говорить")]
|
[Description("Unmute member")]
|
||||||
public async Task<Result> UnmuteUserAsync(
|
public async Task<Result> UnmuteUserAsync(
|
||||||
[Description("юзер кого раззамучивать")]
|
[Description("Member to unmute")]
|
||||||
IUser target,
|
IUser target,
|
||||||
[Description("причина зачем раззамучивать")]
|
[Description("Unmute reason")]
|
||||||
string reason) {
|
string reason) {
|
||||||
if (!_context.TryGetContextIDs(out var guildId, out var channelId, out var userId))
|
if (!_context.TryGetContextIDs(out var guildId, out var channelId, out var userId))
|
||||||
return Result.FromError(
|
return Result.FromError(
|
||||||
|
|
|
@ -43,7 +43,7 @@ public class PingCommandGroup : CommandGroup {
|
||||||
/// A feedback sending result which may or may not have succeeded.
|
/// A feedback sending result which may or may not have succeeded.
|
||||||
/// </returns>
|
/// </returns>
|
||||||
[Command("ping", "пинг")]
|
[Command("ping", "пинг")]
|
||||||
[Description("получает задержку")]
|
[Description("Get bot latency")]
|
||||||
public async Task<Result> SendPingAsync() {
|
public async Task<Result> SendPingAsync() {
|
||||||
if (!_context.TryGetContextIDs(out var guildId, out var channelId, out _))
|
if (!_context.TryGetContextIDs(out var guildId, out var channelId, out _))
|
||||||
return Result.FromError(
|
return Result.FromError(
|
||||||
|
|
|
@ -34,7 +34,7 @@ public class RemindCommandGroup : CommandGroup {
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("remind")]
|
[Command("remind")]
|
||||||
[Description("крафтит напоминалки")]
|
[Description("Create a reminder")]
|
||||||
public async Task<Result> AddReminderAsync(TimeSpan duration, string text) {
|
public async Task<Result> AddReminderAsync(TimeSpan duration, string text) {
|
||||||
if (!_context.TryGetContextIDs(out var guildId, out var channelId, out var userId))
|
if (!_context.TryGetContextIDs(out var guildId, out var channelId, out var userId))
|
||||||
return Result.FromError(
|
return Result.FromError(
|
||||||
|
|
|
@ -21,7 +21,7 @@ using Remora.Results;
|
||||||
namespace Boyfriend.Commands;
|
namespace Boyfriend.Commands;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handles the command to show information about this bot: /about
|
/// Handles the commands to list and modify per-guild settings: /settings and /settings list.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class SettingsCommandGroup : CommandGroup {
|
public class SettingsCommandGroup : CommandGroup {
|
||||||
private readonly ICommandContext _context;
|
private readonly ICommandContext _context;
|
||||||
|
@ -38,8 +38,14 @@ public class SettingsCommandGroup : CommandGroup {
|
||||||
_userApi = userApi;
|
_userApi = userApi;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("settingslist")]
|
/// <summary>
|
||||||
[Description("ХАХАХАХАХАХ я ебанулся")]
|
/// A slash command that lists current per-guild settings.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>
|
||||||
|
/// A feedback sending result which may or may not have succeeded.
|
||||||
|
/// </returns>
|
||||||
|
[Command("settings list")]
|
||||||
|
[Description("Shows settings list for this server")]
|
||||||
[SuppressInteractionResponse(suppress: true)]
|
[SuppressInteractionResponse(suppress: true)]
|
||||||
public async Task<Result> SendSettingsListAsync() {
|
public async Task<Result> SendSettingsListAsync() {
|
||||||
if (!_context.TryGetContextIDs(out var guildId, out _, out _))
|
if (!_context.TryGetContextIDs(out var guildId, out _, out _))
|
||||||
|
@ -76,13 +82,13 @@ public class SettingsCommandGroup : CommandGroup {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A slash command that shows information about this bot.
|
/// A slash command that modifies per-guild settings.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>
|
/// <returns>
|
||||||
/// A feedback sending result which may or may not have succeeded.
|
/// A feedback sending result which may or may not have succeeded.
|
||||||
/// </returns>
|
/// </returns>
|
||||||
[Command("settings")]
|
[Command("settings")]
|
||||||
[Description("редактирует НАСТРОЙКИ ХАХАХАХАХА")]
|
[Description("Change settings for this server")]
|
||||||
public async Task<Result> EditSettingsAsync(
|
public async Task<Result> EditSettingsAsync(
|
||||||
[Description("настройка")] string setting,
|
[Description("настройка")] string setting,
|
||||||
[Description("значение")] string value) {
|
[Description("значение")] string value) {
|
||||||
|
@ -135,7 +141,14 @@ public class SettingsCommandGroup : CommandGroup {
|
||||||
return (Result)await _feedbackService.SendContextualEmbedAsync(failedBuilt, ct: CancellationToken);
|
return (Result)await _feedbackService.SendContextualEmbedAsync(failedBuilt, ct: CancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var builder = new StringBuilder();
|
||||||
|
|
||||||
|
builder.Append(Markdown.InlineCode(setting))
|
||||||
|
.Append($" {Messages.SettingIsNow} ")
|
||||||
|
.Append(Markdown.InlineCode(value));
|
||||||
|
|
||||||
var embed = new EmbedBuilder().WithSmallTitle(Messages.SettingSuccessfulyChanged, currentUser)
|
var embed = new EmbedBuilder().WithSmallTitle(Messages.SettingSuccessfulyChanged, currentUser)
|
||||||
|
.WithDescription(builder.ToString())
|
||||||
.WithColour(ColorsList.Green)
|
.WithColour(ColorsList.Green)
|
||||||
.Build();
|
.Build();
|
||||||
if (!embed.IsDefined(out var built)) return Result.FromError(embed);
|
if (!embed.IsDefined(out var built)) return Result.FromError(embed);
|
||||||
|
|
11
Messages.Designer.cs
generated
11
Messages.Designer.cs
generated
|
@ -699,7 +699,7 @@ namespace Boyfriend {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Language not supported! Supported languages:.
|
/// Looks up a localized string similar to Language not supported!.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string LanguageNotSupported {
|
internal static string LanguageNotSupported {
|
||||||
get {
|
get {
|
||||||
|
@ -896,6 +896,15 @@ namespace Boyfriend {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to is now.
|
||||||
|
/// </summary>
|
||||||
|
internal static string SettingIsNow {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("SettingIsNow", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Setting not changed.
|
/// Looks up a localized string similar to Setting not changed.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -184,8 +184,8 @@
|
||||||
<value>Mute role</value>
|
<value>Mute role</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LanguageNotSupported" xml:space="preserve">
|
<data name="LanguageNotSupported" xml:space="preserve">
|
||||||
<value>Language not supported! Supported languages:</value>
|
<value>Language not supported!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Yes" xml:space="preserve">
|
<data name="Yes" xml:space="preserve">
|
||||||
<value>Yes</value>
|
<value>Yes</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -555,4 +555,7 @@
|
||||||
<data name="SettingNotChanged" xml:space="preserve">
|
<data name="SettingNotChanged" xml:space="preserve">
|
||||||
<value>Setting not changed</value>
|
<value>Setting not changed</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="SettingIsNow" xml:space="preserve">
|
||||||
|
<value>is now</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
|
@ -181,8 +181,8 @@
|
||||||
<value>Роль мута</value>
|
<value>Роль мута</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LanguageNotSupported" xml:space="preserve">
|
<data name="LanguageNotSupported" xml:space="preserve">
|
||||||
<value>Язык не поддерживается! Поддерживаемые языки:</value>
|
<value>Язык не поддерживается! </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Yes" xml:space="preserve">
|
<data name="Yes" xml:space="preserve">
|
||||||
<value>Да</value>
|
<value>Да</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -555,4 +555,7 @@
|
||||||
<data name="SettingNotChanged" xml:space="preserve">
|
<data name="SettingNotChanged" xml:space="preserve">
|
||||||
<value>Настройка не редактирована</value>
|
<value>Настройка не редактирована</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="SettingIsNow" xml:space="preserve">
|
||||||
|
<value>теперь имеет значение</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
|
@ -184,8 +184,8 @@
|
||||||
<value>звание замученного</value>
|
<value>звание замученного</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LanguageNotSupported" xml:space="preserve">
|
<data name="LanguageNotSupported" xml:space="preserve">
|
||||||
<value>такого языка нету, ты шо, есть только такие:</value>
|
<value>такого языка нету...</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Yes" xml:space="preserve">
|
<data name="Yes" xml:space="preserve">
|
||||||
<value>да</value>
|
<value>да</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -555,4 +555,7 @@
|
||||||
<data name="SettingNotChanged" xml:space="preserve">
|
<data name="SettingNotChanged" xml:space="preserve">
|
||||||
<value>прикол сдох</value>
|
<value>прикол сдох</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="SettingIsNow" xml:space="preserve">
|
||||||
|
<value>стало</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
Loading…
Add table
Reference in a new issue