diff --git a/modules/ChatManagement/Handler/BanStickerSet.Handler.cs b/modules/ChatManagement/Handler/BanStickerSet.Handler.cs index 34e517c..e188b9a 100644 --- a/modules/ChatManagement/Handler/BanStickerSet.Handler.cs +++ b/modules/ChatManagement/Handler/BanStickerSet.Handler.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Threading.Tasks; using BotFramework.Attributes; using BotFramework.Enums; @@ -43,9 +44,9 @@ public partial class BanStickerSet } [ParametrizedCommand(InChat.Public, "stick_unban", CommandParseMode.Both)] - public async Task HandleUnBanSticker(StickerSet.Param stickerSet) + public async Task HandleUnBanSticker(string stickerSet) { - if (!await PreCommand(stickerSet)) + if (!await PreCommand()) { return; } @@ -57,13 +58,16 @@ public partial class BanStickerSet return; } - var setName = stickerSet.Set.Name; + if (!list.Exists(e => e == stickerSet)) + { + return; + } - list.Remove(setName); + list.Remove(stickerSet); option.SetValue(list); Db.AddOrUpdate(option); - await Reply(FormatStickerSetAction(stickerSet.Set, "разблокирован")); + await Reply(FormatStickerSetAction(stickerSet, "разблокирован")); } [Command(InChat.Public, "stick_banlist", CommandParseMode.Both)] @@ -82,10 +86,18 @@ public partial class BanStickerSet var htmlString = new HtmlString().Bold("Заблокированные наборы стикеров:").Br(); for (var i = 0; i < list.Count; i++) { - var stickerSet = await Bot.GetStickerSetAsync(list[i]); - htmlString.Text($"{i + 1}. ") - .Url("https://t.me/addstickers/" + stickerSet.Name, stickerSet.Title) - .Br(); + try + { + var stickerSet = await Bot.GetStickerSetAsync(list[i]); + htmlString.Text($"{i + 1}. ") + .Url("https://t.me/addstickers/" + stickerSet.Name, stickerSet.Title) + .Br(); + } + catch (Exception) + { + // Suppress error. + // Maybe remove pack from ban, but this exception can be just a timeout or Internal Server Error. + } } msg = htmlString.ToString(); diff --git a/modules/ChatManagement/Handler/BanStickerSet.Utils.cs b/modules/ChatManagement/Handler/BanStickerSet.Utils.cs index 9028efa..bfc1397 100644 --- a/modules/ChatManagement/Handler/BanStickerSet.Utils.cs +++ b/modules/ChatManagement/Handler/BanStickerSet.Utils.cs @@ -1,4 +1,6 @@ -using System.Collections.Generic; +#nullable enable + +using System.Collections.Generic; using System.Threading.Tasks; using BotFramework.Utils; using Kruzya.TelegramBot.Core.Data; @@ -30,9 +32,9 @@ public partial class BanStickerSet return await Db.UserValues.FindOrCreateOption(Chat.Id, "cmBannedStickers"); } - public async Task PreCommand(ParamParser.StickerSet.Param stickerSetParam) + public async Task PreCommand(ParamParser.StickerSet.Param? stickerSetParam = null) { - if (!stickerSetParam.IsValid) + if (stickerSetParam != null && !stickerSetParam.IsValid) { await Reply("Неверный набор стикеров."); return false; @@ -42,13 +44,17 @@ public partial class BanStickerSet } public string FormatStickerSetAction(StickerSet stickerSet, string action) - { - return new HtmlString() + => FormatStickerSetAction(stickerSet.Name, stickerSet.Title, action); + + public string FormatStickerSetAction(string name, string action) + => FormatStickerSetAction(name, name, action); + + public string FormatStickerSetAction(string name, string title, string action) + => new HtmlString() .Text("Набор стикеров ") - .Url($"https://t.me/addstickers/{stickerSet.Name}", stickerSet.Title) + .Url($"https://t.me/addstickers/{name}", title) .Text($" {action}.") .ToString(); - } private async Task CanUseCommands() {