[Telegram] Telegram(六) 以 C# 透過 Telegram bot 廣播訊息到 Channel

  • 在 Nuget上有些其他開發人員已經整理好的 SDK,我是使用這套:(但沒法擔保這個套件沒有問題,如果要使用,請自行留意)

Nuget SDK

  • 透過 Telegram bot 廣播訊息到 Channel 有兩種方式:WebRequest 及 上述的 SDK 。不管是用什麼方式,皆可以使用 Windows Application 來開發,這也是我覺得很方便的一點。
  • 使用 WebRequest 的程式碼如下:
string urlString = "https://api.telegram.org/bot{0}/sendMessage?chat_id={1}&text={2}";
string text = txtMessage.Text;
urlString = String.Format(urlString, apiToken, chatId, text);

// 如果使用的 .net framework 版本是低於 4.6 ,那麼需要加下面這行程式碼,如果高於 4.6 (含4.6),則可以不需要這行,原因可以參考這裡 https://blog.darkthread.net/blog/disable-tls-1-0-issues
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
WebRequest request = WebRequest.Create(urlString);
Stream rs = request.GetResponse().GetResponseStream();
StreamReader reader = new StreamReader(rs);
string line = "";
StringBuilder sb = new StringBuilder();
while (line != null)
{
	line = reader.ReadLine();
	if (line != null)
	sb.Append(line);
}
  • 使用 SDK 的方法:
private static readonly Telegram.Bot.TelegramBotClient tg = new Telegram.Bot.TelegramBotClient(apiToken);
var r = tg.SendTextMessageAsync(chatId, txtMessage.Text).Result;上述是傳送文字的方法,其中使用到的參數 apiToken 、 chatId 皆可使用前面的方法取得,參數的型態都可以宣告為 string 。
  • 再來介紹傳送圖片或影片的方法:
private void butSendImage_Click(object sender, EventArgs e)
{
    Stream stream = File.OpenRead(txtImagePath.Text);
    stream.Position = 0;
            
    var r = tg.SendPhotoAsync(chatId, stream).Result;
}

private void butSendVideo_Click(object sender, EventArgs e)
{
    Stream video = File.OpenRead(txtVideoPath.Text);
    video.Position = 0;

    var r = tg.SendVideoAsync(chatId, video).Result;
}
  • C# Windows Application 程式畫面

程式畫面

  • C# Windows Application 程式執行結果

程式執行結果

在〈[Telegram] Telegram(六) 以 C# 透過 Telegram bot 廣播訊息到 Channel〉中有 5 則留言

  1. 想請問是要新增哪個項目?
    然後是直接複製貼上並改api、chatid就能直接出現視窗?

    1. 是的,我是這樣做的沒錯。不過已經經過一年了,不知道telegram的規格是否有變

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *