最近一陣子被 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