mirror of
https://github.com/TeamOctolings/Octobot.git
synced 2025-04-20 00:43:36 +03:00
/settingslist now has pages
This commit is contained in:
parent
42258aecd4
commit
a58e1cf75f
5 changed files with 72 additions and 14 deletions
|
@ -168,7 +168,7 @@
|
||||||
<data name="CurrentSettings" xml:space="preserve">
|
<data name="CurrentSettings" xml:space="preserve">
|
||||||
<value>Current settings:</value>
|
<value>Current settings:</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsLang" xml:space="preserve">
|
<data name="SettingsLanguage" xml:space="preserve">
|
||||||
<value>Language</value>
|
<value>Language</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPrefix" xml:space="preserve">
|
<data name="SettingsPrefix" xml:space="preserve">
|
||||||
|
@ -558,4 +558,13 @@
|
||||||
<data name="SettingIsNow" xml:space="preserve">
|
<data name="SettingIsNow" xml:space="preserve">
|
||||||
<value>is now</value>
|
<value>is now</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Page" xml:space="preserve">
|
||||||
|
<value>page</value>
|
||||||
|
</data>
|
||||||
|
<data name="PageNotFound" xml:space="preserve">
|
||||||
|
<value>Page not found!</value>
|
||||||
|
</data>
|
||||||
|
<data name="PagesAllowed" xml:space="preserve">
|
||||||
|
<value>There are total pages</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
|
@ -165,7 +165,7 @@
|
||||||
<data name="CurrentSettings" xml:space="preserve">
|
<data name="CurrentSettings" xml:space="preserve">
|
||||||
<value>Текущие настройки:</value>
|
<value>Текущие настройки:</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsLang" xml:space="preserve">
|
<data name="SettingsLanguage" xml:space="preserve">
|
||||||
<value>Язык</value>
|
<value>Язык</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPrefix" xml:space="preserve">
|
<data name="SettingsPrefix" xml:space="preserve">
|
||||||
|
@ -433,8 +433,8 @@
|
||||||
<value>Я не смог найти этого пользователя ни в одном из серверов, в которых я есть. Проверь правильность ID и нахождение пользователя на этом сервере максимум 30 дней назад</value>
|
<value>Я не смог найти этого пользователя ни в одном из серверов, в которых я есть. Проверь правильность ID и нахождение пользователя на этом сервере максимум 30 дней назад</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsDefaultRole" xml:space="preserve">
|
<data name="SettingsDefaultRole" xml:space="preserve">
|
||||||
<value>Общая роль</value>
|
<value>Роль по умолчанию</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CommandDescriptionRemind" xml:space="preserve">
|
<data name="CommandDescriptionRemind" xml:space="preserve">
|
||||||
<value>Добавляет напоминание</value>
|
<value>Добавляет напоминание</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -558,4 +558,13 @@
|
||||||
<data name="SettingIsNow" xml:space="preserve">
|
<data name="SettingIsNow" xml:space="preserve">
|
||||||
<value>теперь имеет значение</value>
|
<value>теперь имеет значение</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Page" xml:space="preserve">
|
||||||
|
<value>страница</value>
|
||||||
|
</data>
|
||||||
|
<data name="PageNotFound" xml:space="preserve">
|
||||||
|
<value>Страница не найдена!</value>
|
||||||
|
</data>
|
||||||
|
<data name="PagesAllowed" xml:space="preserve">
|
||||||
|
<value>Всего страниц существует</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
|
@ -168,7 +168,7 @@
|
||||||
<data name="CurrentSettings" xml:space="preserve">
|
<data name="CurrentSettings" xml:space="preserve">
|
||||||
<value>настройки:</value>
|
<value>настройки:</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsLang" xml:space="preserve">
|
<data name="SettingsLanguage" xml:space="preserve">
|
||||||
<value>язык</value>
|
<value>язык</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPrefix" xml:space="preserve">
|
<data name="SettingsPrefix" xml:space="preserve">
|
||||||
|
@ -558,4 +558,13 @@
|
||||||
<data name="SettingIsNow" xml:space="preserve">
|
<data name="SettingIsNow" xml:space="preserve">
|
||||||
<value>стало</value>
|
<value>стало</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Page" xml:space="preserve">
|
||||||
|
<value>это страница</value>
|
||||||
|
</data>
|
||||||
|
<data name="PageNotFound" xml:space="preserve">
|
||||||
|
<value>если я был бы html, я бы сказал 404</value>
|
||||||
|
</data>
|
||||||
|
<data name="PagesAllowed" xml:space="preserve">
|
||||||
|
<value>ну а если быть точнее, тут всего страниц</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
|
@ -67,7 +67,8 @@ public class SettingsCommandGroup : CommandGroup {
|
||||||
[RequireDiscordPermission(DiscordPermission.ManageGuild)]
|
[RequireDiscordPermission(DiscordPermission.ManageGuild)]
|
||||||
[Description("Shows settings list for this server")]
|
[Description("Shows settings list for this server")]
|
||||||
[UsedImplicitly]
|
[UsedImplicitly]
|
||||||
public async Task<Result> ExecuteSettingsListAsync() {
|
public async Task<Result> ExecuteSettingsListAsync(
|
||||||
|
[Description("Settings list page")] int page) {
|
||||||
if (!_context.TryGetContextIDs(out var guildId, out _, out _))
|
if (!_context.TryGetContextIDs(out var guildId, out _, out _))
|
||||||
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"));
|
||||||
|
@ -79,23 +80,35 @@ public class SettingsCommandGroup : CommandGroup {
|
||||||
var cfg = await _dataService.GetSettings(guildId.Value, CancellationToken);
|
var cfg = await _dataService.GetSettings(guildId.Value, CancellationToken);
|
||||||
Messages.Culture = GuildSettings.Language.Get(cfg);
|
Messages.Culture = GuildSettings.Language.Get(cfg);
|
||||||
|
|
||||||
return await SendSettingsListAsync(cfg, currentUser, CancellationToken);
|
return await SendSettingsListAsync(cfg, currentUser, page, CancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<Result> SendSettingsListAsync(JsonNode cfg, IUser currentUser, CancellationToken ct = default) {
|
private async Task<Result> SendSettingsListAsync(JsonNode cfg, IUser currentUser, int page, CancellationToken ct = default) {
|
||||||
var builder = new StringBuilder();
|
var builder = new StringBuilder();
|
||||||
|
const int optionsPerList = 7;
|
||||||
foreach (var option in AllOptions) {
|
var totalPages = (AllOptions.Length + optionsPerList - 1)/optionsPerList;
|
||||||
builder.Append(Markdown.InlineCode(option.Name))
|
for (var i = optionsPerList * page - optionsPerList; i <= optionsPerList * page - 1; i++) {
|
||||||
.Append(": ");
|
try {
|
||||||
builder.AppendLine(option.Display(cfg));
|
builder.AppendLine($"Settings{AllOptions[i].Name}".Localized())
|
||||||
|
.Append(Markdown.InlineCode(AllOptions[i].Name))
|
||||||
|
.Append(": ")
|
||||||
|
.AppendLine(AllOptions[i].Display(cfg))
|
||||||
|
.AppendLine();
|
||||||
|
} catch { /* hilariously ignored */ }
|
||||||
}
|
}
|
||||||
|
|
||||||
var embed = new EmbedBuilder().WithSmallTitle(Messages.SettingsListTitle, currentUser)
|
var embed = new EmbedBuilder().WithSmallTitle(Messages.SettingsListTitle, currentUser)
|
||||||
.WithDescription(builder.ToString())
|
.WithDescription(builder.ToString())
|
||||||
.WithColour(ColorsList.Default)
|
.WithColour(ColorsList.Default)
|
||||||
|
.WithFooter($"{Messages.Page}: {page}/{totalPages}")
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
|
if (optionsPerList * page - optionsPerList >= AllOptions.Length) {
|
||||||
|
embed = new EmbedBuilder().WithSmallTitle(Messages.PageNotFound, currentUser)
|
||||||
|
.WithDescription($"{Messages.PagesAllowed}: {Markdown.Bold(totalPages.ToString())}")
|
||||||
|
.WithColour(ColorsList.Red)
|
||||||
|
.Build();
|
||||||
|
}
|
||||||
|
|
||||||
return await _feedbackService.SendContextualEmbedResultAsync(embed, ct);
|
return await _feedbackService.SendContextualEmbedResultAsync(embed, ct);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
18
src/Messages.Designer.cs
generated
18
src/Messages.Designer.cs
generated
|
@ -947,5 +947,23 @@ namespace Boyfriend {
|
||||||
return ResourceManager.GetString("SettingIsNow", resourceCulture);
|
return ResourceManager.GetString("SettingIsNow", resourceCulture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static string Page {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Page", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static string PageNotFound {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("PageNotFound", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static string PagesAllowed {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("PagesAllowed", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue