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