本文章僅作為個人筆記
相信看到文章的應(yīng)該都知道Telegram是國外一款開源強加密的全平臺通訊工具迹蛤,這里就不多介紹了民珍,直接上個人的一些資源和分析與理解,如果有不對的地方還望大神指正盗飒。
Telegram在很多搜索引擎上搜索都是機器人開發(fā)相關(guān)的嚷量,很少對用戶進行操作,為此特地整理一些用戶操作相關(guān)逆趣,還希望能夠?qū)σ恍┤擞兴鶐椭?/h4>
Telegram官網(wǎng)
Telegram獲取個人開發(fā)信息教程
Telegram開發(fā)信息入口(因為Telegram操作用戶的開發(fā)都需要3個參數(shù)蝶溶,而這3個參數(shù)就是從這個網(wǎng)頁獲取的)
Telegram的Android開源代碼地址(本人嘗試過編譯運行此代碼,但是試了非常久依然無法編譯通過宣渗,無奈只能放棄抖所,如果有大神能跑起來還望指教一二,在此謝過了痕囱。)
Telegram的AngularJs開源代碼地址(本人主攻方向為Android田轧,js相關(guān)并不熟悉,所以也只是跑了下鞍恢,可以運行)
Telegram的php開源代碼地址(這一套代碼是可以運行的傻粘,本人還特地抽離了工具包封裝到了Laravel運行每窖,無奈Laravel每一個請求都是不同的線程,無法復(fù)用一個連接實例弦悉,導(dǎo)致每次調(diào)用Telegram相關(guān)api都需要走一遍登錄操作窒典,效率非常低,無奈只能放棄稽莉,如果有大神有解決方案還望指點瀑志。)
Telegram的python開源代碼地址(這一套代碼可以運行,而且很多方法調(diào)用都是沒有問題污秆,本人最終平衡后使用的是這一套代碼劈猪,結(jié)合python的flask框架進行交互)
Telethon的api文檔地址(Telethon就是Telegram的python開源工具代碼)
-
因為文章這樣結(jié)束顯的有些短,就貼一些個人用到的可以調(diào)用方法貼出來了混狠。
-
php相關(guān)
-
初始化
use Illuminate\Support\Facades\Log;
$app_id = 12345678;//這里填寫用戶的app_id
$api_hash = 'xxxxxxxxxxxxxx';//這里填寫用戶的api_hash
$phone_number = '+8618888888888';//這里填寫用戶電話號碼
$this->MadelineProto = new \danog\MadelineProto\API('/tmp/session.madeline', ['app_info' => ['api_id' => $app_id, 'api_hash' => $api_hash], 'updates' => ['handle_updates' => false]]);//創(chuàng)建示例
$this->MadelineProto->start();//開始登陸
-
發(fā)送消息(文中$username為獲取的用戶username岸霹,傳入時前面加前綴@,如@test将饺,$message則直接為想要發(fā)送的消息)
$this->MadelineProto->messages->sendMessage(['peer' => $username, 'message' => $message]);
-
加入群組($groupLink為群組加入鏈接贡避,如https://t.me/testtttttt)
$this->MadelineProto->channels->joinChannel(['channel' => $groupLink]);
-
根據(jù)username獲取用戶詳細信息
$this->MadelineProto->get_full_info($username);
-
根據(jù)關(guān)鍵字在全網(wǎng)查找聯(lián)系人($search為過濾條件,不可為空字符串予弧,$limit為獲取個數(shù)刮吧,最大為1000個。)
$this->MadelineProto->contacts->search(['q' => $search, 'limit' => $limit])['users'];
-
檢查電話號碼是否激活($phoneNumber為電話號碼掖蛤,記得添加前綴)
$this->MadelineProto->auth->checkPhone(['phone_number' => $phoneNumber]);
-
獲取當前用戶聊天列表(獲取聊天列表可過濾群組杀捻,變相獲取所有群組)
$this->MadelineProto->messages->getAllChats(['except_ids' => [0]])['chats'];
-
根據(jù)群組信息獲取群組所有用戶信息($groupInfo可以是邀請鏈接或id,例如'https://t.me/danogentili'/'chat#492772765'/'channel#38575794')
$this->MadelineProto->get_pwr_chat($groupInfo);
-
python相關(guān)
-
初始化
api_id = 12345 # 用戶api_id
api_hash = 'xxxxxxxxxxxxx' # 用戶 api_hash
phone_number = '+861888888888' # 用戶號碼
client = TelegramClient(phone_number, api_id, api_hash)
client.session.report_errors = False
client.connect()
if not client.is_user_authorized():
client.send_code_request(phone_number)
client.sign_in(phone_number, input('Enter the code: '))
-
發(fā)送消息(其中user_id為用戶id蚓庭,message為需要發(fā)送的消息)
client.send_message(int(user_id), str(message))
-
獲取當前用戶聊天列表(獲取聊天列表可過濾群組致讥,變相獲取所有群組)
responses = client.iter_dialogs(10000)
if responses is not None:
for response in responses:
if isinstance(response.entity, Channel): # 過濾群組
print(response)
-
根據(jù)群組信息獲取群組所有用戶信息
channel = client.get_entity(PeerChannel(int(in_id))) # 根據(jù)群組id獲取群組對象
responses = client.iter_participants(channel, aggressive=True) # 獲取群組所有用戶信息
for response in responses:
if response.first_name is not None:
first_name = bytes.decode(base64.b64encode(response.first_name.encode('utf-8')))
else:
first_name = None
if response.last_name is not None:
last_name = bytes.decode(base64.b64encode(response.last_name.encode('utf-8')))
else:
last_name = None
response.id # 用戶id
response.access_hash # 用戶hash值
response.username # 用戶username
response.phone # 用戶電話號碼
最后為了方便大家交流,建了個企鵝群器赞,歡迎大家一起加入共同進步 799271038
因為文章這樣結(jié)束顯的有些短,就貼一些個人用到的可以調(diào)用方法貼出來了混狠。
-
php相關(guān)
-
初始化
use Illuminate\Support\Facades\Log; $app_id = 12345678;//這里填寫用戶的app_id $api_hash = 'xxxxxxxxxxxxxx';//這里填寫用戶的api_hash $phone_number = '+8618888888888';//這里填寫用戶電話號碼 $this->MadelineProto = new \danog\MadelineProto\API('/tmp/session.madeline', ['app_info' => ['api_id' => $app_id, 'api_hash' => $api_hash], 'updates' => ['handle_updates' => false]]);//創(chuàng)建示例 $this->MadelineProto->start();//開始登陸
-
發(fā)送消息(文中$username為獲取的用戶username岸霹,傳入時前面加前綴@,如@test将饺,$message則直接為想要發(fā)送的消息)
$this->MadelineProto->messages->sendMessage(['peer' => $username, 'message' => $message]);
-
加入群組($groupLink為群組加入鏈接贡避,如https://t.me/testtttttt)
$this->MadelineProto->channels->joinChannel(['channel' => $groupLink]);
-
根據(jù)username獲取用戶詳細信息
$this->MadelineProto->get_full_info($username);
-
根據(jù)關(guān)鍵字在全網(wǎng)查找聯(lián)系人($search為過濾條件,不可為空字符串予弧,$limit為獲取個數(shù)刮吧,最大為1000個。)
$this->MadelineProto->contacts->search(['q' => $search, 'limit' => $limit])['users'];
-
檢查電話號碼是否激活($phoneNumber為電話號碼掖蛤,記得添加前綴)
$this->MadelineProto->auth->checkPhone(['phone_number' => $phoneNumber]);
-
獲取當前用戶聊天列表(獲取聊天列表可過濾群組杀捻,變相獲取所有群組)
$this->MadelineProto->messages->getAllChats(['except_ids' => [0]])['chats'];
-
根據(jù)群組信息獲取群組所有用戶信息($groupInfo可以是邀請鏈接或id,例如'https://t.me/danogentili'/'chat#492772765'/'channel#38575794')
$this->MadelineProto->get_pwr_chat($groupInfo);
-
-
python相關(guān)
-
初始化
api_id = 12345 # 用戶api_id api_hash = 'xxxxxxxxxxxxx' # 用戶 api_hash phone_number = '+861888888888' # 用戶號碼 client = TelegramClient(phone_number, api_id, api_hash) client.session.report_errors = False client.connect() if not client.is_user_authorized(): client.send_code_request(phone_number) client.sign_in(phone_number, input('Enter the code: '))
-
發(fā)送消息(其中user_id為用戶id蚓庭,message為需要發(fā)送的消息)
client.send_message(int(user_id), str(message))
-
獲取當前用戶聊天列表(獲取聊天列表可過濾群組致讥,變相獲取所有群組)
responses = client.iter_dialogs(10000) if responses is not None: for response in responses: if isinstance(response.entity, Channel): # 過濾群組 print(response)
-
根據(jù)群組信息獲取群組所有用戶信息
channel = client.get_entity(PeerChannel(int(in_id))) # 根據(jù)群組id獲取群組對象 responses = client.iter_participants(channel, aggressive=True) # 獲取群組所有用戶信息 for response in responses: if response.first_name is not None: first_name = bytes.decode(base64.b64encode(response.first_name.encode('utf-8'))) else: first_name = None if response.last_name is not None: last_name = bytes.decode(base64.b64encode(response.last_name.encode('utf-8'))) else: last_name = None response.id # 用戶id response.access_hash # 用戶hash值 response.username # 用戶username response.phone # 用戶電話號碼
-