用Telegram來收發Line的訊息,use telegram to Send and receive messages(from Line)。 或者把它當作Line的訊息備份也是可啦 😛
用 Telegram 來收發 Line 的訊息。
use telegram to Send and receive messages(from Line).
或者把它當作 Line 的訊息備份也是可啦 😛
支援 Telegram、Line 個人及群組
1對1、多對1、1對多、多對多 的訊息傳遞。
此為針對 v3.6 的 README。
如果是 Telegram_Bot 新手推薦看完 這個影片後在來使用。
如果想要獲取更新資訊,可以加入這個頻道 https://t.me/TG_link_Line
功能 | V2 | V3 | V3.1 | V3.2 | V3.3 | V3.4 | V3.5 | V3.6 |
---|---|---|---|---|---|---|---|---|
文字 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓(註4) | ✓(註4) | ✓(註4) |
貼圖 | 僅Line發給TG | ✓(註1) | ✓(註1) | ✓(註3) | ✓(註3) | ✓(註3) | ✓(註3) | |
照片 | 僅TG發給Line | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
影片 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
錄音 | 僅Line發給TG | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
位置 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
檔案 | 僅Line發給TG | 僅Line發給TG | ✓ | ✓ | ✓ | ✓ | ✓ | |
GIF | ✓(註2) | ✓(註2) | ✓(註2) | ✓(註2) | ✓(註2) | ✓(註2) | ||
TG_video_note | ✓ | ✓ | ✓ | ✓ | ✓ | |||
知道誰發言 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
針對回復 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
房間分類 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
獨立房間 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
關鍵字提醒 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
訊息時間 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
自訂語言包 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
自訂時區 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
知道Line_bot異動 | ✓ | ✓ | ✓ | ✓ | ✓ | |||
知道Line群人員異動 | ✓ | ✓ | ✓ | ✓ | ✓ | |||
/tryget_XXX 功能 | ✓ | ✓ | ✓ | ✓ | ✓ | |||
🍭變換房位 | ✓ | ✓ | ✓ | ✓ | ||||
🆗設定提示 | ✓ | ✓ | ✓ | ✓ | ||||
🎨傳圖設定 | ✓ | ✓ | ✓ | ✓ | ||||
顯示Line房間名稱 | ✓ | ✓ | ||||||
支援V8 | ✓ |
獨立房間(升級房間) + ☀️ 顯示發送者:
影片連結點這裡(mp4 version)
關鍵字提及:
(在 "🔧 更多設定" 內)
訊息時間:
(在 "🔧 更多設定" 內)
支援 粗體、斜體、連結
自訂語言包:
在 "Telegram_link_Line(version3)/Languages" 中有 "Native(zh-tw).gs" 這個原生繁中語言包,其中 可修改 的內容如圖反白區域。
(修改後記得按下 "新增發布" 且在TG端 /debug 才能變更成功)
對了 如果你覺得你自訂的語言包不錯,可以pm我或自行pull請求來上傳。
其屬性及內容:
"":{ //物件名稱
"type": "to_Telegram",
//^ "to_Line"、"to_Telegram"、"command(Telegram)"、"to_Telegram(only_text)"
"text": "" or ['',''],
//^ 自定義文字內容 如有像 {0} 這種東西代表會有引入的文字 你也可以完全不引入
//^ 如果形式是['','']則陣列內的內容會自動串接成一字串。
"notification": false, //不通知? true or false
"parse_mode":"" //送出文字模式 "HTML" or "Markdown" or ""
},
像是這個 {0}的用法
鍵盤內容也可自訂
需要使用者申請 Telegram_bot 跟 Line_bot(Messaging API)
需有一google帳號並在其中創建:
事前聲明:下列4個步驟的檔案必須在同一個google帳號下,或者有存取權,bot才會正常運作。
一個doc檔,並將v3中的"doc.gs"內容複製上去。
一個sheet檔
一個資料夾(用來放來自Line的媒體),推薦名稱叫 "download_from_line"(如果Google空間爆了bot會罷工喔,一般帳號有15G應該還好,如果是這個bot的東西占滿空間可以去"自己的TGbot"->"更多設定"->"丟棄舊檔"來丟到垃圾桶)
如下圖,確保V8是啟動狀態,要有 "停用由 Chrome V8 技術..." 在上面
(如果是新版的IDE,在左邊齒輪中勾選 "啟用 Chrome V8 執行階段")
三個gs檔(google apps script),並將v3其中的"Telegram_link_Line.gs"的內容複製在一開始給你的"程式碼"區內。
複製完後按下左上角的 "檔案" -> "新增" -> "指令碼檔案" -> 輸入你要的名稱(推薦叫"baseANDtest") -> 將"baseANDtest.gs"內容複製上去並填上資訊(註一)
上面填的資訊正常來說最後應該跟這張圖呈現得差不多
再一次 按下左上角的 "檔案" -> "新增" -> "指令碼檔案" -> 輸入你要的名稱(推薦叫"Languages") -> 將"Native(zh-tw).gs"內容複製上去
然後請如下操作:
main - 開啟主選單
exit - 離開對話
debug - 重生資料(bot壞掉時用)(不會讓房間不見)
allread - 全部已讀
help - 獲取所有指令說明
不然升級房間後會有沒接收到訊息的問題。
找@BotFather關閉掉隱私模式。
步驟:
此時上面的文字應該是會改成向類似這樣 "Privacy mode is disabled for (bot 名稱) (bot的username)."
註一
doc和sheet的ID在網址中,例如網址: https://docs.google.com/spreadsheets/d/1vp35X4AfgP2mGLib0PZQ0NLaw_Ur0PSD_0rjgbwOfx/edit#gid=0
那ID就是"1vp35X4AfgP2mGLib0PZQ0NLaw_Ur0PSD_0rjgbwOfx" (介於 "d/" 跟 "/edit" 之間)
不知道自己的Telegram ID可以在Telegram中找 @you_id_bot 問。
然後關於gs文件中第7行的 "Line_id"、第8行的 "CHANNEL_ACCESS_TOKEN"在如下圖line的後台中。
註二
第一次會要求權限,同意就好。
註三
Telegram用
"https://api.telegram.org/bot<token>/setWebhook?url=<https://XXX>&max_connections=1"
(這個格式("
EX:
token = "123123:ZFDGFG"
url = "https://XXX"
那網址就是:
"https://api.telegram.org/bot123123:ZFDGFG/setWebhook?url=https://XXX&max_connections=1"
沒有 "<" 跟 ">",請務必把這兩個符號刪掉!
(設定Webhook的方式就是將你改好的網址丟到任一瀏覽器上,並按Enter送出,如果成功會回你 "Webhook was set" 或 "Webhook always set")
Line則要到後台改(長這樣)
NOTE:
你必須先跟你的機器人對話過他才能傳訊息給你。
如有出現問題請記得看一下 sheet 的 log !!!
NOTE2:
現在Line伺服器在群組中有時會發userID(須對方line app更新)
所以有些知道是誰說的,有些不知道,我現在也很困擾。
如果你的GCP專案列表出現不明的專案請先不要砍,這個專案可能就是這個bot用的,如果砍了...
這裡有補救的方式......
by我的血淚教訓。
因為 Line 官方在 2019/06/10 後便將所有的 bot 改成新的方案
因此開始有人次的限制!!!請務必注意這一點!!!!!
(只好安慰自己說起碼拿來當備份還算實用...
目前我還會繼續更新這個專案,最少搞定現在有的bug,還有先前承諾的功能。
如果要理解程式的流程,推薦可以從V2紀念用下手,那時只有核心邏輯。
在這支程式中一切都是從 doPost(e) 這個 function 開始的,然後經過前面的一修必要流程(模式選擇、基本的預設、預處理、讀取doc檔)後,再從 "if (estringa.update_id) {" 這裡判斷是TG送來的,還是Line送來的json,並做出對應的處理。
為了讓使用者可以用最少的步驟完成更新,所以我在規劃程式劃分時只分離出3個檔案
因為這樣的設計故我需說明一下 Telegram_link_Line.gs (擠在一起很難讀)
開啟 sheet 寫入 log。
判斷是不是群組或超級群組
1-1 是否是以綁訂在 doc 中的 "升級房間" 中? (Y -> 1-3 , N -> 1-2)
1-2 如果沒有在 doc 中,則給4次的機會來做房間綁定,4次後則離開。
1-3 如果在 doc 中,則依傳送的類型(文字、貼圖...)用不同的函式傳到對應的 Line 房間。
如果是私人1對1
2-1 是不是擁有者? (Y -> 2-3 , N -> 2-2)
2-2 發送該專案連結請他自己做一個
2-3 傳過來的是文字訊息? (Y -> 2-4 , N -> 2-5)
2-4 依 ALL['mode'] 的值來判斷現在的模式,並依模式對bot進行設定,亦或發送訊息至 Line。
2-5 如果 ALL['mode'] == "🚀 發送訊息" 則傳訊息至 Line,如果不是則請他注意當前模式。
doc是很重要的文件,用來儲存會變動的資料。
{
"data": [{
"RoomId": "zzz",
"Name": "(這個房間是空的)❎",
"status": "normal",
"Amount": 0,
"Notice": false
}],
"mode": 0,
"Notice": "正常通知",
"opposite": {
"RoomId": "zzz",
"Name": "(這個房間是空的)❎"
},
"last": {
"RoomId": "zzz",
"Name": "zzz"
},
"Order": [0, 2, 1, 4, 3],
"keyword": ["mi", "bot"],
"RoomKeyboard": [
[{
"text": "🔃 重新整理"
}, {
"text": "🔧 更多設定"
}, {
"text": "🔭 訊息狀態"
}],
[{
"text": "(這個房間是空的)❎"
}]
],
"FastMatch": {
"(這個房間是空的)❎": 0
},
"FastMatch2": {
"zzz": 0
},
"FastMatch3": {},
"keyword_notice": false,
"massage_time": false,
"TG_temporary_docking": {},
"wait_to_Bind": {},
"GMT": "GMT+8",
"code_version": 3.1
}
data = 存放房間資訊
mode = 暫存指令(通常為0)
Notice = 管理整體通知(確定廢除)(未作用)
opposite = 暫存指令對象房間
last = 來自Line端的最後訊息房間(未作用)
Order = 預計用來做自動依時間排序房間(未作用)
keyword = 關鍵字設定,出現關鍵字自動通知
RoomKeyboard = 房間的 keyboard,為節省重生時間而生
FastMatch = 快速索引用
FastMatch2 = 快速索引用
FastMatch3 = 快速索引用(給已升級房間用)
keyword_notice = 是否開啟關鍵字通知(預設為"關閉")
massage_time = 是否開啟訊息時間(預設為"關閉")
TG_temporary_docking = 如果bot被邀進群組則會登記於此,一旦bot在該群組中收到的前4則訊息,沒有包含綁定的隨機碼就會離開該群組以減少流量負荷。
wait_to_Bind = 當TG端按下升級房間時,則會將待綁定的房間資料塞入此處等待綁定,會被 /debug 或 /unsetroom 指令消除。
GMT = 此預設 GMT+8 若不再該時區可自行在 TGbot "更多設定" 中調整
code_version =
該程式的版本,用來驗證配對語言包正確性。
在這之後其實還有一些沒說明的屬性可以在 up_version 函式中找到。
更新方式:
更新方式:
待做:
提醒一下各位,如果是用我的server轉圖的,用了這版還有問題的話,麻煩請
更新方式:
更新方式:
部屬教學影片在1年半後終於生出來啦!!! 完全值得紀念⸜(* ॑꒳ ॑* )⸝
新增 /help 指令(列出所有指令用)
支援 TG → Line 的格式化文字(刪除線、code)
改變 在新創 bot 時,up_version會自己設定資料夾權限,降低創造難度。 (此改變不會對已升級用戶造成影響)
改變 現在開始如果 bot 在 TG 群遇到編輯過的文字會主動提醒 "不支援"
關於這個,如果你有什麼較好處理方法,歡迎私我提供
恩... 我覺得我被耍了,經過測試上次那個應該是 google drive 突然ㄆㄚˇ帶
程式碼本身沒問題 ( ˘・з・)
如果又有發生這樣的狀況 請等一陣子(我測試約2分鐘)再發同一張貼圖。 未來程式應該會主動解決這個問題。(可能自架圖床解決,最近google一直出問題啊...)
更新方式:
如果你這幾天跟我一樣發現貼圖傳送突然有問題的話,可以更新這個版本看看
沒問題的話不更新也沒差
更新方式:
更新方式:
更新方式:
如果你已經升級的話,請額外執行以下步驟:
================================
...我merge完
......測完訊息沒問題 .........就發布了
死也沒想到...會死在升級......。
結論...
merge時如果太多衝突...
然後確定自家dev分支絕對沒問題的情況下...
乾脆一點直接覆蓋,別太相信自己merge的能力了
才不會像我一樣東漏一個西漏一個...
"🔧更多設定" 內:
新的特性:
這次有特別新增 server 的程式碼
如果要自架 "轉圖server" 的請至 "image_conversion_server" 資料夾查看!
更新方式:
已知Bug:
- 當line成員離開時無法顯示是誰離開(需等下次加新功能時才能修)
(真的是下次啦QQ,要先來改老師給東西不然會開天窗,只好做一半先發布Orz)- TG bot 傳送 "檔案" 時,"檔案名稱"要是含有中文,中文的部分顯示不出來
(覺得TG的問題,我之後盡量嘗試修補)
對不起 。・゚・(つд`゚)・゚・ 我下次一定會先過 autotest 才放上來
更新方式:
更新方式:
更新方式:
已知Bug:當line成員離開時無法顯示是誰離開(需等下次加新功能時才能修)
更新方式:
更新方式:
更新方式:
這次更新前一樣先 CP() 過後再用 /allread 在更新較不會有意外發生。
此外如果你的GCP專案列表出現不明的專案請先不要砍,這個專案可能就是這個bot用的,如果砍了...
這裡有補救的方式......
by我的血淚教訓。
更新方式:
此次更新前請務必將所有房間降級後再來更新,如覺得太多房間要降覺得麻煩可以先將 Telegram_link_Line.gs 的內容貼上,然後 儲存但不發佈 後執行 "mv_all_uproom()" 這個函式來一鍵全降級。 (記得先"CP()"過,如果真的出狀況還可以去sheet中"JSON備份"內找到備份還原回去)。
一樣在 "更新前" 請盡量看過所有內容後按下 /allread 指令,較不會有意外發生。
如果升級群組後發現你轉傳"驗證碼"後完全沒反應,請先去開找@BotFather關閉掉隱私模式,然後再轉傳一次。
步驟:
此時上面的文字應該是會改成向類似這樣 "Privacy mode is disabled for (bot 名稱) (bot的username)."
在不行的話,請升級成 超級群組 並給bot管理員的權限----。
更新內容:
1.Telegram_link_Line.gs 修改
2.Languages.gs 新增(看readme
請手動更新 Telegram_link_Line.gs,在 "更新後",還需要手動執行 REST_keyboard 函式(如圖示範),若擔心資料崩潰可先執行 CP 函式,這樣就算壞了也能手動回朔。
而在 "更新前" 請盡量看過所有內容後按下 /allread 指令,較不會有意外發生。
你忘記解除隱私模式,請見這裡,設定後如果還是不行,請將 bot 移除群組後在重新拉入試試。
在剛部屬或升級bot時有一個 "執行 up_version()" 步驟,尼可能沒有做,請對 bot 下 /up_version 指令後即可解決(如果是 V3.3 以前的版本請手動到gs執行)
請對 bot 下 /info , /v , /V , /version 中其中一個指令,如果是 V3.2 或 V3.1 的版本,請至 doc 文件尋找 code_version 的值,更早的版本... 只能對照程式碼了(。ŏ﹏ŏ)
原則上應該是不會出現這種狀況(都用全局鎖了qwq),如果不是網路或TG的問題的話,請 /main + /debug 再繼續操作,要是依舊無解請在 Telegram 上找 @we684123 來協助處理。
私訊時請直接說明來意,並給我 "baseANDtest -> base()" 截圖(如下,記得打碼),還有發生時sheet中對應時間的log的。
這是因為 line 限制一個群組只能加入一個 bot,如果你目前群組內的 bot 是 Telegram_link_Line bot 的話可以請擁有者邀你進入他的TG群,本bot支援 TG 群對 line 群的對話方式。
或著還有個狀況是你沒有把"自動同意加入群組"打開(參考問題6的圖)
這個要去 line bot 的後臺關掉
基本上這 bot 是架在你的 Google Apps Script 上的(其實也算是在GCP上),我完全沒存取權,如果你沒有主動將設定檔 (baseANDtest.gs & doc.gs & gs的對外網址) 的內容洩漏出去的話是不會有這樣的問題的。
唯一有可能的是貼圖因為無法在 gs 上進行轉換,故會先送到我的 server 上做轉換後才送回你的 Google Drive,我的server目前不會存任何貼圖,且如果您在 "🔧更多設定" -> "🌀轉圖設定" 設成 "不讓server存" 那我未來即使為了加快轉圖速度而保留轉圖後的貼圖,也不會存下你的貼圖。
當然,您也可以直接自架轉圖 server,原始碼我也有開源於此專案,架好後去 "🌀轉圖設定" 改一下 server 域名就好。
可以的,請直接刪掉!
500的話要嘛是 line 伺服器的問題,只能等。
還有一個可能是他傳的大小超過 50MB,bot 無法下載(還在構思這怎麼解決qwq)
但就算沒超過 50 MB,Line server也會處理N久
我遇過等她處理 32MB 處理整整2小時半的案例過...。
如果錯誤訊息是 "bot發生錯誤,訊息如下:TypeError: 無法呼叫 undefined 的「getResponseCode」方法。" 可能是你的 "🌀 轉圖設定",設定錯誤,請設好後再繼續。
(預設是 目標伺服器域名:we684123.hopto.org 目標api:media_conservion)
還有一個可能是你的 download_from_line 資料夾忘記設成 "知道的人均可檢視" (不過v3.4開始會自己設定好權限,應該較少發生這個問題,但還是可以檢查一下)
你的 CHANNEL_ACCESS_TOKEN 設定有問題,正常的 CHANNEL_ACCESS_TOKEN 長這樣
因為我以前的手機容量不大,Line太佔空間,所以只好用Telegram來間接使用Line
印象中是這個原因啦......
hmmm........
如果你覺得這對你有幫助的話,........
聽說這是 "台灣pay" 的 QRcode..............
我也沒用過(。ŏ﹏ŏ) .......................................
永格天
一個中二病水瓶座男子
不太擅長塗鴉 (看大頭貼就知道Orz...)