[生活日常] 把 telegram 群組當記事本用

突然感覺把 telegram 的群組當成自己的記事本很不錯,可以隨時紀錄在網路上看到的技術文件,就算日後要翻找也方便。(不過 telegram 不能自己組群組,一定要加入一位好友,所以我跟家人借了一個手機號碼,多申請了一個帳號,這樣測試程式也方便XD)

Line 也可以自己組一個群組,做同樣的事情,差異在:如果日後想把這個群組分享給朋友,後面加入的朋友會看不到前面的資料。

[Telegram] Telegram(八) 建立群組(Group)

  • Telegram 群組的優點:
  1. 人數的上限是20萬人, Line 目前的群組上限人數是500人。
  2. 有更多訊息、管理員的權限設定,管理上更方便。
  3. 歷史訊息、傳送過的檔案,都可以永遠保存,更換裝置或是新加入的成員都可以往前查看。(目前單一檔案傳送上限是 1.5 GB,群組沒有上限)
  • 在 Telegram 聊天畫面,點擊左上角的選單圖示。點擊左上角選單
  • 點擊「建立群組」。

telegram建立群組

  • 輸入「群組名稱」(必填),輸入完後,按下「下一步」。telegram建立群組02
  • 建立群組時,要先加入(邀請)至少一位朋友,然後按下「建立」。telegram建立群組加入成員
  • 完成群組的建立後,畫面上會顯示如下訊息。

telegram完成群組建立

  • 在群組畫面的右上角選單中,可以查看群組的功能或設定。如果關閉 Telegram 的群組通知,就不會收到這個群組的通知,但是當有人「@XXX」的話,即便XXX關閉通知,依舊會收到通知,這一點也是跟 Line 比較不同。

telegram群組功能

  • 經由「管理群組」->「權限」可以限制群組裡的成員的權限。telegram管理群組
  • 設定群組裡成員的使用權限,甚至是限制發言(傳送訊息)的時間(聊天限速),如果設定10秒,亦即表示10秒內不能發言兩次。設定後請記得「儲存」。

telegram管理群組權限

  • 最後還可以把一個頻道和一個群組連結在一起,這樣就可以把頻道當成管理者的公布頻道,而需要與管理者討論互動的話,就加入群組。
  • 在頻道畫面的右上角選單中,可以查看頻道的功能或設定。telegram管理頻道
  • 進入「頻道管理」後,點擊「加入群組」。telegram管理頻道權限
  • 可以選擇「建立新群組」或是由下方列出目前擁有的群組選擇一個。telegram管理頻道結合群組
  • 選擇群組後,會出現如下訊息,詢問要「連結群組」或是「取消」,選擇「連結群組」後,就會將頻道與群組連結在一起了。telegram管理頻道結合群組02
  • 當頻道與群組連結後,在頻道的畫面下方就會出現「討論」的按鈕,按下後即可轉換到群組的畫面。

telegram管理頻道結合群組03

[Telegram] Telegram(七) 以 C# 實作對談式 Telegram bot 機器人

  • 還是使用 Windows Application 的方式建立專案,但是這個對談式的機器人只能說是一個簡易性的機器人,只能回答制式的答案,需要再 LUIS (Language Understanding Intelligent Service),才能做到如真人般的交談。
private static readonly Telegram.Bot.TelegramBotClient tg = new Telegram.Bot.TelegramBotClient(apiToken);

private async void butBot_Click(object sender, EventArgs e)
{
   tc.OnMessage += Tc_MessageReceived;
   tc.StartReceiving();
}

private void Tc_MessageReceived(object sendor, Telegram.Bot.Args.MessageEventArgs e)
{
   // 機器人收到什麼訊息,就在訊息前面加上「你剛才說:」,然後回傳
   tg.SendTextMessageAsync(e.Message.Chat.Id, "你剛才說:" + e.Message.Text);

   // 機器人如果收到「/早安」或「/你好嗎?」這兩個訊息,則會回傳相對應的訊息;如果收到其他訊息,則回傳列出可以回答的選項
   /*if (e.Message.Type == Telegram.Bot.Types.Enums.MessageType.Text)
   {
      if (e.Message.Text == "/你好嗎?")
         tg.SendTextMessageAsync(e.Message.Chat.Id, "我很好,謝謝你!你呢?");
      else if (e.Message.Text == "/早安")
         tg.SendTextMessageAsync(e.Message.Chat.Id, "早安 " + e.Message.Chat.Username);
      else
      {
         tg.SendTextMessageAsync(e.Message.Chat.Id, @"Usage : 
            /你好嗎?
            /早安
            ");
      }
   }*/
}
  • 程式畫面,僅需要一個按鈕,按下按鈕後,即開始執行對談式機器人。

程式畫面

  • 執行結果

執行結果

 

 

 

[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(五) 取得 Chat ID

  • 首先,在瀏覽器中輸入「https://api.telegram.org/botToken/getUpdates」,(紅色字體改為由 @BotFather 給予的 token ,取得 token 的方法請參考 [Telegram] Telegram(二) 建立 Bot 機器人 ),則會得到一串的 JSON ,如果得到的是如以下的 JSON ,表示頻道中沒有廣播訊息(好像會以天為單位,前一天就算有廣播訊息,也不會列出)。
{"ok":true,"result":[]}
  • 可先在頻道中輸入「Hello World」,然後再回到前一個步驟,將會得到以下的 JSON:
{"ok":true,"result":[{"update_id":720650387,
"channel_post":{"message_id":22,"chat":{"id":-123456789,"title":"頻道名稱","username":"機器人名稱","type":"channel"},"date":1582014900,"text":"Hello World"}}]}

排序後如下:

{
	"ok":true,
	"result":[
	{
		"update_id":720650387,
		"channel_post":
		{
			"message_id":22,
			"chat":
			{
				"id":-123456789,
				"title":"頻道名稱",
				"username":"機器人名稱",
				"type":"channel"
			},
			"date":1582014900,
			"text":"Hello World"
		}
	}]
}
  • 找到其中的 “chat:” id”:-123456789,就是我們需要的 Chat ID,接著就可以藉著這組 Chat ID ,使用程式來對頻道發送廣播訊息了。
  • 取得 Chat ID 之後,也可以試著在瀏覽器中輸入「https://api.telegram.org/botToken/sendMessage?chat_id=-123456789&text=Hello World」,紅色字體須改為自己的 token ,以及剛剛取得的 Chat ID ,應該就可以順利在頻道中廣播訊息了。

 

[Telegram] Telegram(四) 將 Bot (機器人) 加入 Channel (頻道)

  • 進到頻道的聊天室窗,點擊右邊「加入成員」的圖示。

加入成員

  • 在搜尋欄位輸入 Bot username(機器人的名稱),包含@的符號,例如:@tzuhuabot,找到後,加入他。

查詢機器人

  • Telegram 規定機器人只能是管理員,但還是可以各別給予管理員的權限。

設定管理員

  • 設定機器人的權限,這裡只需要給予「發布訊息」的權限即可。

設定權限

  • 儲存後,就完成將機器人加入頻道的步驟了。
  • 一般如果沒有要寫程式跟 telegram 溝通的話,到這裡使用起來就跟 Line@ 的使用方式差不多了。只是使用 Line@ 的話,一般使用者可以傳送訊息,而 telegram 的頻道不可以,需要另外開一個討論群組才可以雙向溝通。

[Telegram] Telegram(三) 建立 Channel 頻道

因為 Telegram Bot 不能直接私訊給使用者,所以必須透過頻道( Channel)來廣播。不過在頻道中,使用者無法傳訊息的 Telegram Bot ,只能單向的接收 Telegram Bot 廣播的訊息。

  • 在 Telegram 聊天畫面,點擊左上角的選單圖示。

點擊左上角選單

  • 點擊「建立頻道」

建立頻道

  • 輸入「頻道名稱」(必填)及「簡介」(選填)。

輸入頻道名稱及簡介

  • 接著選擇「頻道類型」,因為稍後會需要找 Chat ID,所以暫時先設定為「公開頻道」,再輸入「連結」,可以選擇(輸入)自己喜歡的連結,如果已經被使用了,畫面上會顯示「此連結已被佔用」,就要再選擇其他。日後使用者可以透過這個連結加入頻道。

設定頻道資料

  • 然後可以選擇是否要加入其他使用者到頻道裡,如果不需要則直接「略過」。
  • 頻道建立完成

[Telegram] Telegram(二) 建立 Bot 機器人

要先申請 Telegram 帳號,才可以申請 bot 帳號。

Telegram bot 有兩種,一種是可以對談的機器人,一種是像廣播電台的那種廣播頻道。

對談的機器人就跟 Line Bot 一樣,一來一往的交談,而這樣的交談內容也是根據資料庫而來。

廣播頻道則是只有頻道的管理者可以一直傳送(廣播)資訊,頻道中的成員只能接收,不能發出訊息。

要怎麼建立 Telegram Bot 呢?我個人覺得 Telegram 建立 Bot 的方式很特別,在 Telegram 中搜尋另一個機器人(@BotFather),透過這個機器人來建立使用者的機器人,酷吧!

首先,透過搜尋功能找到 @BotFather

搜尋@BotFather

找到之後就可以跟他對談,點選BotFather之後,會看到:

點選@BotFather

按下開始,@BotFather 會列出交談對話內容,

@BotFather交談內容

對 @BotFather 輸入「/newbot」後,@BotFather 會回問 Bot 的名稱,以及 bot 的 username,需要注意的是 username 必須以 bot 結尾,例如:abcbot 或是 abc_bot,用來區分 bot 和一般的帳號。

以上步驟如果遇到重複的名稱或是 username,@BotFather 都會回復要求重新輸入,直到使用者放棄或是成功輸入正確的資料。

當成功建立後,@BotFather 會給予一個 token (如下圖紅色框),格式會類似123456:ABC123fgsdflgkjk,如此便可使用此 token 透過 HTTPS 發送 Request。

@BotFather新增Bot

[Telegram] Telegram(一) 簡介

Telegram 是做什麼用的?他跟 Line 一樣,都是通訊軟體,可以傳文字、圖片、表情符號、檔案等等,簡單來說,他就跟 Line 一樣。不過,據說三月份開始 Line 的 Line@的費用要增加了,所以許多 Line@ 的使用者(店家),轉而使用 Telegram 。

Telegram 創辦人的故事
http://technews.tw/2016/04/27/pavel-veleryevich-durov-tale-of-the-marvellous/?fbclid=IwAR1HKWn18hjqV6-2TsyH7lBAN6ymCMkeTpMpVfQOYvT6-nZtvCgjzElpWE8

步驟一:
下載Telegram App
( 一開始是英文,後面可以直接改成中文,請先下載英文版 )
安卓手機下載網址
https://telegram.org/dl/android
蘋果手機下載網址
https://telegram.org/dl/ios

步驟二:
輸入電話號碼來註冊,透過簡訊輸入驗證碼。
輸入之後會有一通來自國外的電話(我分別測試了安卓和蘋果手機,只有安卓手機有接到電話,蘋果手機沒有),無需接通,填好驗證碼可進行下一步驟。

步驟三:
註冊完畢後,點擊下方連結就可以中文化Telegram。
https://t.me/setlanguage/taiwan