還個技術債,之前因為開發 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 buttons = new List();
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 第一。