代碼:https://github.com/MaskRay/telegramircd
telegramircd
telegramircd類似於bitlbee,在web.telegram.org和IRC間建起橋樑,可以使用IRC客戶端收發朋友、羣消息。
原理
修改https://web.telegram.org用的JS,通過WebSocket把信息發送到服務端,服務端兼做IRC服務端,把IRC客戶端的命令通過WebSocket傳送到網頁版JS執行。未實現IRC客戶端,因此無法把羣的消息轉發到另一個IRC服務器(打通兩個羣的bot)。
安裝
需要Python 3.5或以上,支持async/await語法
pip install -r requirements.txt安裝依賴
Arch Linux
安裝https://aur.archlinux.org/packages/telegramircd-git,會自動在/etc/telegramircd/下生成自簽名證書(見下文),導入瀏覽器即可。
其他發行版
openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -out cert.pem -subj '/CN=127.0.0.1' -dates 9999創建密鑰與證書。- Chrome訪問
chrome://settings/certificates,導入cert.pem,在Authorities標籤頁選擇該證書,Edit->Trust this certificate for identifying websites. - Chrome安裝Switcheroo Redirector擴展,把https://web.telegram.org/js/app.js重定向至https://127.0.0.1:9003/app.js。
./telegramircd.py --tls-cert cert.pem --tls-key key.pem,會監聽127.1:6669的IRC和127.1:9003的HTTPS(兼WebSocket over TLS)
IRC客戶端
- IRC客戶端連接127.1:6669
- 刷新https://web.telegram.org頁面
- 回到IRC客戶端,會發現自動加入了
+telegramchannel
在+telegram發信並不會羣發,只是爲了方便查看有哪些朋友。
IRC命令
telegramircd是個簡單的IRC服務器,可以執行通常的IRC命令,可以對其他客戶端私聊,創建standard
channel(以#開頭的channel)。另外若用token與某個微信網頁版連接的,就能看到微信聯繫人(朋友、羣聯繫人)顯示爲特殊nick、羣顯示爲特殊channel(以&開頭,根據羣名自動設置名稱)
這些特殊nick與channel只有當前客戶端能看到,因此一個服務端支持多個微信帳號同時登錄,每個用不同的IRC客戶端控制。另外,以下命令會有特殊作用:
- 程序默認選項爲
--join auto,收到某個羣的第一條消息後會自動加入對應的channel,即開始接收該羣的消息。 /dcc send nick/channel filename,給mutual friend或羣發圖片/文件。參見https://en.wikipedia.org/wiki/Direct_Client-to-Client#DCC_SEND/list,列出所有羣/names,更新當前羣成員列表/part [channel]的IRC原義爲離開channel,轉換爲微信代表在當前IRC會話中不再接收該羣的消息。不用擔心,telegramircd並沒有主動退出羣的功能/query nick打開與$nick的私聊窗口,與之私聊即爲在微信上和他/她/它對話/who channel,查看羣成員列表
顯示

vte終端模擬器支持URL選擇,但不能識別filesystem:https://。我修改的aur/vte3-ng-fullwidth-emoji添加了該類URL支持。
termite C-S-Space URL選擇也不支持,可以用https://gist.github.com/MaskRay/9e1c57642bedd8b2b965e39b2d58fc82添加該類URL支持。感谢张酉夫的ELF
hack指导。