[C#] Telegram.Bot v19 - 回應訊息,回覆訊息的處理

2023-05-09

最近一陣子被 Telegram 搞到有點煩,因為這之前使用的時候使用的版本是 Telegram.Bot 15 的版本

現在就是常常遇到,突然無法得知客戶傳過來的訊息,而且很多 InlineKeyboard 結果都不如預期

之後我就去看了一下,有更新竟然一次跳到 18.x 而且改了不是普通的多,今天就做個紀錄..


1. 你得先跟 BotFather 建立一個機器人,並且跟拿到 TOKEN ,可以參考這裡 https://sendpulse.com/knowledge-base/chatbot/telegram/create-telegram-chatbot

我就不贅述了,我之所以不得不升級就上去就是因為你建新的機器人,拿到的 token ,在 Telegram.Bot SDK  v15 版本裡面會被報錯誤,非正確格式的 token

2. Nuget Library : https://www.nuget.org/packages/Telegram.Bot 目前版本為 19.0.0



3. 建立起一個 TelegramBotClient

public static void InitTelegramBotClient() { _TelegramBotClient = new TelegramBotClient("1234567:4TT8bAc8GHUspu3ERYn-KGcvsvGB9u_n4ddy"); _TelegramBotClient.StartReceiving( updateHandler: HandleUpdateAsync, pollingErrorHandler: (botClient, exception, cancellationToken) => { return Task.CompletedTask; }, default); }



4. 簡單的一個回應,如果收到訊息就是直接回傳跟你對話的人的 ChatId  , HandleUpdateAsync


static async Task HandleUpdateAsync(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken) { if (update.Message == null) return; Console.WriteLine("收到訊息:" + update.Message.Text); //用戶的 Chat Id //可以記錄下來,之後可以主動傳訊給他 var chatId = update.Message.Chat.Id; var sentMessage = await botClient.SendTextMessageAsync( chatId: chatId, text: "Ur Id is :" + update.Message.Chat.Id, cancellationToken: cancellationToken); Console.WriteLine(chatId + ":" + sentMessage.Text); }



5. 收到回覆訊息的狀況,並且得知 Client 是回復 哪一個訊息跟相關資 訊

static async Task HandleUpdateReplyTestAsync(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken) { if (update.Message == null) return; Console.WriteLine("收到訊息:" + update.Message.Text); if (update.Message.ReplyToMessage != null) { Console.WriteLine("收到回復訊息- 原始訊息:" + update.Message.ReplyToMessage.Text); Console.WriteLine("收到回復訊息- 原始訊息 Id :" + update.Message.ReplyToMessage.MessageId); } var chatId = update.Message.Chat.Id; var sentMessage = await botClient.SendTextMessageAsync( chatId: chatId, text: "Ur Id is :" + update.Message.Chat.Id, cancellationToken: cancellationToken); Console.WriteLine(chatId + ":" + sentMessage.Text + ",MessageId:" + sentMessage.MessageId); }


大概記錄到這,之後來記錄關於 ReplyMarkup 的部份

reference:

https://telegrambots.github.io/book/1/quickstart.html



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