一群為了自己在乎的城市而做出貢獻的朋友,利用自己空閒的時間,沒有支薪,還自掏腰包,到處在台中豐原介紹當地的美食。
從去年下半年開始,我自學影片的後製,當然也有朋友協助教學,或是在我碰到問題時協助我。
因緣際會下,得知這群朋友正在做這件有意義的事情,所以我自告奮勇向他們提出,可以幫忙影片的後製,一方面可以協助他們,一方面可以有更多練習的機會。
記錄生活及學習的日誌
一群為了自己在乎的城市而做出貢獻的朋友,利用自己空閒的時間,沒有支薪,還自掏腰包,到處在台中豐原介紹當地的美食。
從去年下半年開始,我自學影片的後製,當然也有朋友協助教學,或是在我碰到問題時協助我。
因緣際會下,得知這群朋友正在做這件有意義的事情,所以我自告奮勇向他們提出,可以幫忙影片的後製,一方面可以協助他們,一方面可以有更多練習的機會。
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 : /你好嗎? /早安 "); } }*/ }
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); }
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; }
{"ok":true,"result":[]}
{"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"
}
}]
}
因為 Telegram Bot 不能直接私訊給使用者,所以必須透過頻道( Channel)來廣播。不過在頻道中,使用者無法傳訊息的 Telegram Bot ,只能單向的接收 Telegram Bot 廣播的訊息。
要先申請 Telegram 帳號,才可以申請 bot 帳號。
Telegram bot 有兩種,一種是可以對談的機器人,一種是像廣播電台的那種廣播頻道。
對談的機器人就跟 Line Bot 一樣,一來一往的交談,而這樣的交談內容也是根據資料庫而來。
廣播頻道則是只有頻道的管理者可以一直傳送(廣播)資訊,頻道中的成員只能接收,不能發出訊息。
要怎麼建立 Telegram Bot 呢?我個人覺得 Telegram 建立 Bot 的方式很特別,在 Telegram 中搜尋另一個機器人(@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。
Telegram 是做什麼用的?他跟 Line 一樣,都是通訊軟體,可以傳文字、圖片、表情符號、檔案等等,簡單來說,他就跟 Line 一樣。不過,據說三月份開始 Line 的 Line@的費用要增加了,所以許多 Line@ 的使用者(店家),轉而使用 Telegram 。
步驟一:
下載Telegram App
( 一開始是英文,後面可以直接改成中文,請先下載英文版 )
安卓手機下載網址
https://telegram.org/dl/android
蘋果手機下載網址
https://telegram.org/dl/ios
步驟二:
輸入電話號碼來註冊,透過簡訊輸入驗證碼。
輸入之後會有一通來自國外的電話(我分別測試了安卓和蘋果手機,只有安卓手機有接到電話,蘋果手機沒有),無需接通,填好驗證碼可進行下一步驟。
步驟三:
註冊完畢後,點擊下方連結就可以中文化Telegram。
https://t.me/setlanguage/taiwan
研究 tensorflow + pose 中,因為對 python 還不熟(目前也在學習中),所以只能先玩玩 web 版。
無意間發現的直立式滑鼠,好奇之下買來試試。
此款是無線(2.4G)充電式,充電時顯示紅燈,充飽電後顯示綠燈。
還有上一頁、下一頁功能,上方的按鍵是變換DPI(800-1200-1600)。
目前測試的結果是還需要一個滑鼠墊,把手腕處墊高,不然可能手腕還是會有問題。