mirror of
https://github.com/Bubuni-Team/telegram-bot.git
synced 2026-07-31 00:29:24 +03:00
[cm] ability to ban stickerset
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using BotFramework;
|
||||
using BotFramework.Abstractions;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Telegram.Bot;
|
||||
using Telegram.Bot.Types;
|
||||
using TgStickerSet = Telegram.Bot.Types.StickerSet;
|
||||
|
||||
namespace West.TelegramBot.ChatManagement.ParamParser;
|
||||
|
||||
public class StickerSet
|
||||
{
|
||||
public class Param
|
||||
{
|
||||
public TgStickerSet Set { get; set; }
|
||||
public bool IsValid { get; set; } = false;
|
||||
}
|
||||
|
||||
public class Parser : IRawParameterParser<Param>
|
||||
{
|
||||
private readonly IBotInstance _bot;
|
||||
private readonly ILogger<StickerSet> _logger;
|
||||
|
||||
public Parser(IBotInstance bot, ILogger<StickerSet> logger)
|
||||
{
|
||||
_bot = bot;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public Param DefaultInstance()
|
||||
{
|
||||
return new Param();
|
||||
}
|
||||
|
||||
public bool TryGetValueByRawUpdate(Update update, out Param result)
|
||||
{
|
||||
result = DefaultInstance();
|
||||
|
||||
var bot = _bot.BotClient;
|
||||
|
||||
var message = update?.Message;
|
||||
var sticker = message?.ReplyToMessage?.Sticker;
|
||||
if (sticker is { SetName: { } })
|
||||
{
|
||||
result.Set = bot.GetStickerSetAsync(sticker.SetName).GetAwaiter().GetResult();
|
||||
result.IsValid = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
var messageText = message?.Text;
|
||||
if (messageText != null)
|
||||
{
|
||||
var setName = messageText.Split(' ').Skip(1).ToList();
|
||||
if (setName.Any())
|
||||
{
|
||||
try
|
||||
{
|
||||
result.Set = bot.GetStickerSetAsync(setName.First())
|
||||
.GetAwaiter()
|
||||
.GetResult();
|
||||
result.IsValid = true;
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError("Got error while fetching sticker set: {ErrorMessage}", e.Message);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user