Работа с календарем

PRTelegramBot предоставляет возможность работы с календарем из коробки. За основу был взят пакет CalendarPicker | karb0f0s https://github.com/karb0f0s/CalendarPicker.

Вид календаря представлен на рисунках ниже:

Для работы с календарем используется CalendarUtils.

Пример:

/// <summary>
/// Напишите в чат Calendar
/// Вызов команды календаря
/// </summary>
[ReplyMenuHandler("Calendar")]
public static async Task PickCalendar(ITelegramBotClient botClient, Update update)
{
    try
    {
        await CalendarUtils.Create(botClient, update, CustomTHeader.CalendarCallback, "Выберите дату:");
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex);
    }
}

/// <summary>
/// Напишите в чат EngCalendar
/// Вызов команды календаря на английском языке
/// </summary>
[ReplyMenuHandler("EngCalendar")]
public static async Task EngPickCalendar(ITelegramBotClient botClient, Update update)
{
    try
    {
        await CalendarUtils.Create(botClient, update, CultureInfo.GetCultureInfo("en-US", false), CustomTHeader.CalendarCallback, "Choose date:");
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex);
    }
}

/// <summary>
/// Обработка выбраной даты
/// </summary>
[InlineCallbackHandler<CustomTHeader>(CustomTHeader.CalendarCallback)]
public static async Task PickDate(ITelegramBotClient botClient, Update update)
{
    var bot = botClient.GetBotDataOrNull();
    try
    {
        using (var inlineHandler = new InlineCallback<CalendarTCommand>(botClient, update))
        {
            var command = inlineHandler.GetCommandByCallbackOrNull();
            await Helpers.Message.Send(botClient, update, command.Data.Date.ToString());
        }
    }
    catch (Exception ex)
    {
        bot.Events.OnErrorLogInvoke(ex);
    }
}

Last updated