Добавлены новые методы отправки сообщений
This commit is contained in:
@@ -1,44 +1,53 @@
|
||||
using BotPages.Core.Context;
|
||||
|
||||
namespace BotPages.Core.Abstractions;
|
||||
namespace BotPages.Core.Abstractions;
|
||||
|
||||
/// <summary>
|
||||
/// Фабрика адаптеров мессенджеров.
|
||||
/// Используется для разрешения конкретного <see cref="IMessengerAdapterSetup"/> по типу мессенджера.
|
||||
/// Используется для разрешения конкретного <see cref="IMessengerAdapterSetup"/> по ID адаптера.
|
||||
/// </summary>
|
||||
public interface IMessengerAdapterFactory
|
||||
{
|
||||
/// <summary>
|
||||
/// Список зарегистрированных адаптеров.
|
||||
/// Список всех зарегистрированных адаптеров.
|
||||
/// </summary>
|
||||
Dictionary<string, IMessengerAdapterSetup> Adapters { get; }
|
||||
IReadOnlyList<IMessengerAdapterSetup> AllAdapters { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Зарегистрировать адаптер для указанного типа мессенджера.
|
||||
/// Зарегистрировать адаптер с уникальным идентификатором.
|
||||
/// </summary>
|
||||
/// <param name="messengerType">
|
||||
/// Тип мессенджера (например, "Telegram", "Slack", "VK").
|
||||
/// </param>
|
||||
/// <param name="adapter">
|
||||
/// Экземпляр адаптера, реализующий <see cref="IMessengerAdapter"/>.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// Текущий экземпляр <see cref="IMessengerAdapterFactory"/> для цепочки вызовов.
|
||||
/// </returns>
|
||||
IMessengerAdapterFactory Register(string messengerType, IMessengerAdapterSetup adapter);
|
||||
/// <param name="adapterId">Уникальный идентификатор адаптера.</param>
|
||||
/// <param name="adapter">Экземпляр адаптера.</param>
|
||||
/// <returns>Текущий экземпляр фабрики для цепочки вызовов.</returns>
|
||||
/// <exception cref="ArgumentException">Если адаптер с таким ID уже зарегистрирован.</exception>
|
||||
IMessengerAdapterFactory Register(string adapterId, IMessengerAdapterSetup adapter);
|
||||
|
||||
/// <summary>
|
||||
/// Получить адаптер для указанного мессенджера.
|
||||
/// Зарегистрировать адаптер с автоматически сгенерированным ID.
|
||||
/// </summary>
|
||||
/// <param name="messengerType">
|
||||
/// Тип мессенджера (например, "Telegram", "Slack", "VK").
|
||||
/// Значение должно совпадать с <see cref="UpdateContext.MessengerType"/>.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// Экземпляр <see cref="IMessengerAdapter"/>, зарегистрированный для данного типа мессенджера.
|
||||
/// </returns>
|
||||
/// <exception cref="InvalidOperationException">
|
||||
/// Выбрасывается, если адаптер для указанного типа не зарегистрирован.
|
||||
/// </exception>
|
||||
IMessengerAdapter Resolve(string messengerType);
|
||||
}
|
||||
IMessengerAdapterFactory Register(IMessengerAdapterSetup adapter);
|
||||
|
||||
/// <summary>
|
||||
/// Получить адаптер по ID.
|
||||
/// </summary>
|
||||
/// <exception cref="InvalidOperationException">Если адаптер не найден.</exception>
|
||||
IMessengerAdapter Resolve(string adapterId);
|
||||
|
||||
/// <summary>
|
||||
/// Попытаться получить адаптер по ID.
|
||||
/// </summary>
|
||||
bool TryResolve(string adapterId, out IMessengerAdapter? adapter);
|
||||
|
||||
/// <summary>
|
||||
/// Получить все адаптеры определенного типа.
|
||||
/// </summary>
|
||||
IReadOnlyList<IMessengerAdapter> GetAdaptersByType(string adapterType);
|
||||
|
||||
/// <summary>
|
||||
/// Проверить, зарегистрирован ли адаптер с указанным ID.
|
||||
/// </summary>
|
||||
bool Contains(string adapterId);
|
||||
|
||||
/// <summary>
|
||||
/// Удалить адаптер по ID.
|
||||
/// </summary>
|
||||
bool Remove(string adapterId);
|
||||
}
|
||||
Reference in New Issue
Block a user