InlineMenu В Телеграм
Как сделать похожее меню https://ru.stackoverflow.com/a/1076065/467311 только на С# с использованием Telegram.Bot и Telegram.Bot.Extensions.Polling?
Ответы (1 шт):
Автор решения: Георгий
→ Ссылка
using Telegram.Bot;
using Telegram.Bot.Exceptions;
using Telegram.Bot.Extensions.Polling;
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums;
using Telegram.Bot.Types.ReplyMarkups;
var botClient = new TelegramBotClient("TOKEN");
using var cts = new CancellationTokenSource();
var receiverOptions = new ReceiverOptions
{
AllowedUpdates = { }
};
botClient.StartReceiving(
HandleUpdateAsync,
HandleErrorAsync,
receiverOptions,
cancellationToken: cts.Token);
var me = await botClient.GetMeAsync();
Console.WriteLine($"Start listening for @{me.Username}");
await Task.Delay(int.MaxValue);
cts.Cancel();
async Task HandleUpdateAsync(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken)
{
InlineKeyboardMarkup mainmenu = new(new[]
{
new []
{
InlineKeyboardButton.WithCallbackData(text: "ПО ТУДА", callbackData: "key_tuda"),
InlineKeyboardButton.WithCallbackData(text: "ПО СЮДА", callbackData: "key_suda")
}
});
InlineKeyboardMarkup submenu_tuda = new(new[]
{
new []
{
InlineKeyboardButton.WithCallbackData(text: "ПО СЮДА", callbackData: "key_suda"),
InlineKeyboardButton.WithCallbackData("НАЗАД", callbackData: "key_mainMenu")
}
});
InlineKeyboardMarkup submenu_suda = new(new[]
{
new[]
{
InlineKeyboardButton.WithCallbackData(text: "ПО ТУДА", callbackData: "key_tuda"),
InlineKeyboardButton.WithCallbackData("НАЗАД", callbackData: "key_mainMenu")
}
});
if (update.Type == UpdateType.Message && update.Message!.Type == MessageType.Text)
{
var chatId = update.Message.Chat.Id;
var messageText = update.Message.Text;
string firstName = update.Message.From.FirstName;
Console.WriteLine($"Received a '{messageText}' message in chat {chatId}.");
if (messageText == "/start")
{
Message sentMessage = await botClient.SendTextMessageAsync(
chatId: chatId,
text: $"Привет {firstName}! \n\n Это главное меню.",
replyMarkup: mainmenu,
cancellationToken: cancellationToken);
}
}
if (update.CallbackQuery != null)
{
if (update.CallbackQuery.Data == "key_tuda")
{
Message sentMessage = await botClient.EditMessageTextAsync(
messageId: update.CallbackQuery.Message.MessageId,
chatId: update.CallbackQuery.Message.Chat.Id,
text: "Ты перешел по туда.",
replyMarkup: submenu_tuda,
cancellationToken: cancellationToken);
}
if (update.CallbackQuery.Data == "key_suda")
{
Message sentMessage = await botClient.EditMessageTextAsync(
messageId: update.CallbackQuery.Message.MessageId,
chatId: update.CallbackQuery.Message.Chat.Id,
text: "Ты перешел по сюда.",
replyMarkup: submenu_suda,
cancellationToken: cancellationToken);
}
if (update.CallbackQuery.Data == "key_mainMenu")
{
Message sentMessage = await botClient.EditMessageTextAsync(
messageId: update.CallbackQuery.Message.MessageId,
chatId: update.CallbackQuery.Message.Chat.Id,
text: "Это главное меню.",
replyMarkup: mainmenu,
cancellationToken: cancellationToken);
}
}
}
Task HandleErrorAsync(ITelegramBotClient botClient, Exception exception, CancellationToken cancellationToken)
{
var ErrorMessage = exception switch
{
ApiRequestException apiRequestException
=> $"Telegram API Error:\n[{apiRequestException.ErrorCode}]\n{apiRequestException.Message}",
_ => exception.ToString()
};
Console.WriteLine(ErrorMessage);
return Task.CompletedTask;
}