InlineCallback с подтверждением

InlineInlineCallback с подтверждением и базовой обработкой результата нет

Для InlineCallback кнопок можно сделать обертку с помощью которой пользователь должен будет сначала подтвердить действие и только после этого оно будет выполнено.

Создаете InlineCallback кнопку, после чего оборачиваете ее с помощью InlineCallbackWithConfirmation.

Пример кода:

/// <summary>
/// Команда отработает для бота с botId 0.
/// Команда отработает если пользователь напишет InlineConfirm.
/// </summary>
[ReplyMenuHandler("InlineConfirm")]
public static async Task InlineConfirm(ITelegramBotClient botClient, Update update)
{
    //Кнопка для которой нужно создать подтверждение.
    var exampleInlineCallback = new InlineCallback<EntityTCommand<long>>("Кнопка с подтвержением", CustomTHeaderTwo.ExampleThree, new EntityTCommand<long>(3, ActionWithLastMessage.Delete));
    //Обертка кнопки.
    var exampleWithConfirmation = new InlineCallbackWithConfirmation(exampleInlineCallback, ActionWithLastMessage.Delete);

    //Создание нового меню.
    List<IInlineContent> menu = new() { exampleWithConfirmation } ;
    var testMenu = MenuGenerator.InlineKeyboard(1, menu);
    var option = new OptionMessage();

    //Передача меню в настройки
    option.MenuInlineKeyboardMarkup = testMenu;
    string msg = "InlineCallback с подтверждением";
    //Отправка сообщение с меню
    await PRTelegramBot.Helpers.Message.Send(botClient, update, msg, option);
}

Если на кнопку "нет " не делать обработку, она по умолчанию удалит текущее сообщение.

InlineInlineCallback с подтверждением и кнопкой назад или кастомной обработкой кнопки нет

/// <summary>
/// Команда отработает для бота с botId 0.
/// Команда отработает если пользователь напишет InlineConfirmWithBack.
/// </summary>
[ReplyMenuHandler("InlineConfirmWithBack")]
[InlineCallbackHandler<CustomTHeaderTwo>(CustomTHeaderTwo.ExampleBack)]
public static async Task InlineConfirmWithBack(ITelegramBotClient botClient, Update update)
{
    //Кнопка для которой нужно создать подтверждение.
    var exampleInlineCallback = new InlineCallback<EntityTCommand<long>>("Кнопка с подтвержением", CustomTHeaderTwo.ExampleThree, new EntityTCommand<long>(3, ActionWithLastMessage.Delete));
    //Кнопка обработчик назад или кастомная.
    var exampleBack = new InlineCallback("Назад", CustomTHeaderTwo.ExampleBack);

    //Обертка кнопки.
    var exampleWithConfirmation = new InlineCallbackWithConfirmation(exampleInlineCallback, ActionWithLastMessage.Edit, exampleBack);

    //Создание нового меню.
    List<IInlineContent> menu = new() { exampleWithConfirmation };
    var testMenu = MenuGenerator.InlineKeyboard(1, menu);
    var option = new OptionMessage();

    //Передача меню в настройки
    option.MenuInlineKeyboardMarkup = testMenu;
    string msg = "InlineCallback с подтверждением и обработкой кнопки назад или кастомной";
    //Отправка сообщение с меню
    if(update.Type == Telegram.Bot.Types.Enums.UpdateType.CallbackQuery)
        await PRTelegramBot.Helpers.Message.Edit(botClient, update, msg, option);
    else
        await PRTelegramBot.Helpers.Message.Send(botClient, update, msg, option);
}

Last updated