[C#] Telegram - 製作 InlineKeyboardButton 並且得到答案

2021-02-01

還個技術債,之前因為開發 Telegram 詳細規格還沒有讀清楚,所以製作 KeyboardButton 大概長的像是下面那樣子,但是後來發現,其實就是不好看,而且會不知道到底回哪一個訊息。

之後我想改成這樣

改成這樣後是不是整個高大上起來,這主要可以解決兩個問題 1.美觀 2.可以判斷到底是回應哪一則訊息,今天我們來看看怎麼做。

1. 去跟 bot 父親去要一個 bot ,這我就不贅述 https://www.process.st/telegram-bot/

2. 到 nuget 下載一個套件 Telegram.Bot 

3.接下來就是程式碼的部分

public static TelegramBotClient Bot { get; set; } protected void Application_Start(object sender, EventArgs e) { Bot = new TelegramBotClient("robot_token"); Bot.OnMessage += Bot_OnMessage; Bot.OnCallbackQuery += Bot_OnCallbackQuery; Bot.StartReceiving(); } private void Bot_OnMessage(object sender, Telegram.Bot.Args.MessageEventArgs e) { List<InlineKeyboardButton> buttons = new List<InlineKeyboardButton>(); buttons.Add(new InlineKeyboardButton { Text = "Azure", CallbackData = "azure" }); buttons.Add(new InlineKeyboardButton { Text = "MSDN", CallbackData = "msdn" }); buttons.Add(new InlineKeyboardButton { Text = "Donma Blog", CallbackData = "donmablog" }); var sendResult = Bot.SendTextMessageAsync(e.Message.Chat.Id, "請選擇一個 ?", default, default, default, default , new InlineKeyboardMarkup(buttons.ToArray()), default).Result; Bot.SendTextMessageAsync(e.Message.Chat.Id, "送出去的問句 chat id :" + sendResult.MessageId); } private void Bot_OnCallbackQuery(object sender, Telegram.Bot.Args.CallbackQueryEventArgs e) { var sendResult = Bot.SendTextMessageAsync(e.CallbackQuery.From.Id, "您回答的問題 message id 是:" +e.CallbackQuery.Message.MessageId +", 答案是"+e.CallbackQuery.Data ); }


其實,如果你之前有開發過 telegram 系統就會覺得不難,整個設計的非常的溫馨,果然 telegram 榮登我最愛的 IM 第一。


當麻許的碎念筆記 2014 | Donma Hsu Design.