TelegramOptions

using PRTelegramBot.Core.Middlewares;
using PRTelegramBot.Interfaces;
using PRTelegramBot.Managers;
using PRTelegramBot.Models;
using Telegram.Bot;
using Telegram.Bot.Polling;

namespace PRTelegramBot.Configs
{
    /// <summary>
    /// Параметры telegram бота.
    /// </summary>
    public class TelegramOptions 
    {
        #region Поля и свойства

        /// <summary>
        /// Клиент телеграма.
        /// </summary>
        public TelegramBotClient? Client { get; set; }

        /// <summary>
        /// Токен telegram бота.
        /// </summary>
        public string Token { get; set; }

        /// <summary>
        /// Перед запуском очищает список обновлений, которые накопились когда бот не работал.
        /// </summary>
        public bool ClearUpdatesOnStart { get; set; }

        /// <summary>
        /// Уникальных идентификатор для бота, используется, чтобы в одном приложение запускать несколько ботов.
        /// </summary>
        public long BotId { get; set; }

        /// <summary>
        /// Дополнительные конфигурационные файлы.
        /// </summary>
        public Dictionary<string, string> ReplyDynamicCommands { get; set; } = new();

        /// <summary>
        /// Дополнительные конфигурационные файлы.
        /// </summary>
        public Dictionary<string, string> ConfigPaths { get; set; } = new();

        /// <summary>
        /// Токен отмены.
        /// </summary>
        public CancellationTokenSource CancellationToken { get; set; } = new CancellationTokenSource();

        /// <summary>
        /// Настройки telegram бота.
        /// </summary>
        public ReceiverOptions ReceiverOptions { get; set; } = new ReceiverOptions { AllowedUpdates = { } } ;

        /// <summary>
        /// Сервис провайдер.
        /// </summary>
        public IServiceProvider ServiceProvider { get; set; }

        /// <summary>
        /// Обработчик обновлений Telegram.
        /// </summary>
        public IPRUpdateHandler UpdateHandler { get; set; }

        /// <summary>
        /// Регистратор команд.
        /// </summary>
        public IRegisterCommand RegisterCommand { get; set; }

        /// <summary>
        /// Менеджер управления администраторами.
        /// </summary>
        public IUserManager AdminManager { get; set; } = new AdminListManager();

        /// <summary>
        /// Менеджер управления белым списком.
        /// </summary>
        public IWhiteListManager WhiteListManager { get; set; } = new WhiteListManager();

        /// <summary>
        /// Промежуточные обработчики перед update.
        /// </summary>
        public List<MiddlewareBase> Middlewares { get; set; } = new();

        /// <summary>
        /// Дополнительные проверки перед обработкой команд.
        /// </summary>
        public List<InternalChecker> CommandCheckers { get; set; } = new();

        /// <summary>
        /// Таймаут для получения update в режиме polling.
        /// </summary>
        public int? Timeout { get; set; }

        /// <summary>
        /// Обработчики callbackquery(inline) команд.
        /// </summary>
        public List<ICallbackQueryCommandHandler> CallbackQueryHandlers { get; set; } = new();

        /// <summary>
        /// Обработчики для update сообщений.
        /// </summary>
        public List<IMessageCommandHandler> MessageHandlers { get; set; } = new();

        /// <summary>
        /// Параметры для webhook.
        /// </summary>
        public WebHookOptions WebHookOptions = new WebHookOptions();
        
        /// <summary>
        /// Параметр предотвращает спам об ошибке, если пропала сеть. По умолчанию значение 1 минута, можно поменять.
        /// </summary>
        public int AntiSpamErrorMinute { get; set; } = 1;

        #endregion
    }
}

Last updated