IBotCollection
using PRTelegramBot.Core;
namespace PRTelegramBot.Interfaces
{
/// <summary>
/// Интерфейс для работы с коллекцией ботов.
/// Позволяет получать ботов по различным критериям, а также управлять коллекцией.
/// </summary>
public interface IBotCollection
{
/// <summary>
/// Количество ботов в коллекции.
/// </summary>
long BotCount { get; }
/// <summary>
/// Получить бота по Telegram Id.
/// </summary>
/// <param name="telegramId">Идентификатор Telegram.</param>
/// <returns>Экземпляр бота или null, если не найден.</returns>
PRBotBase? GetBotByTelegramIdOrNull(long? telegramId);
/// <summary>
/// Получить бота по его внутреннему Id.
/// </summary>
/// <param name="botId">Идентификатор бота.</param>
/// <returns>Экземпляр бота или null, если не найден.</returns>
PRBotBase? GetBotOrNull(long botId);
/// <summary>
/// Получить бота по условию фильтрации.
/// </summary>
/// <param name="predicate">Функция фильтрации.</param>
/// <returns>Экземпляр бота или null.</returns>
PRBotBase? GetBotOrNull(Func<PRBotBase, bool> predicate);
/// <summary>
/// Получить бота по имени или логину.
/// </summary>
/// <param name="botName">Название/логин бота.</param>
/// <returns>Экземпляр бота или null.</returns>
PRBotBase? GetBotOrNull(string botName);
/// <summary>
/// Получить всех ботов.
/// </summary>
/// <returns>Список всех ботов.</returns>
IEnumerable<PRBotBase> GetBots();
/// <summary>
/// Получить всех ботов с условием фильтрации.
/// </summary>
/// <param name="predicate">Функция фильтрации.</param>
/// <returns>Список ботов, удовлетворяющих условию.</returns>
IEnumerable<PRBotBase> GetBots(Func<PRBotBase, bool> predicate);
/// <summary>
/// Добавить нового бота в коллекцию.
/// </summary>
/// <param name="bot">Экземпляр бота.</param>
void AddBot(PRBotBase bot);
/// <summary>
/// Удалить бота из коллекции.
/// </summary>
/// <param name="bot">Экземпляр бота.</param>
void RemoveBot(PRBotBase bot);
/// <summary>
/// Очистить всю коллекцию ботов.
/// </summary>
void ClearBots();
/// <summary>
/// Получить следующий уникальный идентификатор для нового бота.
/// </summary>
/// <returns>Следующий Id.</returns>
long GetNextId();
}
}
Last updated