BotContext
Контекст бота.
namespace PRTelegramBot.Models
{
/// <summary>
/// Контекст бота.
/// </summary>
public class BotContext : IBotContext
{
#region Поля и свойства
/// <summary>
/// Хранилище кастомных данных.
/// </summary>
protected object customData { get; set; }
#endregion
#region IIBotContext
/// <inheritdoc />
public IEnumerable<PRBotBase> Bots => BotCollection.Instance.GetBots();
/// <inheritdoc />
public PRBotBase Current { get; }
/// <inheritdoc />
public ITelegramBotClient BotClient => Current.BotClient;
/// <inheritdoc />
public Update Update { get; }
/// <inheritdoc />
public UpdateType CurrentUpdateType => Update.Type;
/// <inheritdoc />
public CancellationToken CancellationToken { get; }
#endregion
#region Методы
/// <summary>
/// Создать заглушку контекста.
/// </summary>
/// <returns>Заглушка.</returns>
public static IBotContext CreateEmpty()
{
return new BotContext(new PRBotDummy());
}
/// <inheritdoc />
public bool TryGetCustomValue<T>(out T? value)
{
if (customData is T t)
{
value = t;
return true;
}
value = default;
return false;
}
/// <inheritdoc />
public void SetCustomData(object data)
{
customData = data;
}
#endregion
#region Конструкторы
/// <summary>
/// Конструктор.
/// </summary>
/// <param name="bot">Экземпляр бота.</param>
/// <param name="update">Обновление telegram.</param>
/// <param name="cancellationToken">Токен отмены.</param>
public BotContext(PRBotBase bot, Update update, CancellationToken cancellationToken)
{
Current = bot;
Update = update;
CancellationToken = cancellationToken;
}
/// <summary>
/// Конструктор.
/// </summary>
/// <param name="bot">Экземпляр бота.</param>
public BotContext(PRBotBase bot) : this(bot, new Update(), CancellationToken.None) {}
/// <summary>
/// Конструктор.
/// </summary>
/// <param name="bot">Экземпляр бота.</param>
/// <param name="update">Обновление telegram.</param>
public BotContext(PRBotBase bot, Update update) : this(bot, update, CancellationToken.None) { }
/// <summary>
/// Конструктор.
/// </summary>
/// <param name="bot">Экземпляр бота.</param>
/// <param name="cancellationToken">Токен отмены.</param>
public BotContext(PRBotBase bot, CancellationToken cancellationToken) : this(bot, new Update(), cancellationToken) { }
#endregion
}
}
Last updated