本文章仅作为个人笔记
相信看到文章的应该都知道Telegram是国外一款开源强加密的全平台通讯工具,这里就不多介绍了,直接上个人的一些资源和分析与理解,如果有不对的地方还望大神指正。
Telegram在很多搜索引擎上搜索都是机器人开发相关的,很少对用户进行操作,为此特地整理一些用户操作相关,还希望能够对一些人有所帮助。
Telegram官网
Telegram获取个人开发信息教程
Telegram开发信息入口(因为Telegram操作用户的开发都需要3个参数,而这3个参数就是从这个网页获取的)
Telegram的Android开源代码地址(本人尝试过编译运行此代码,但是试了非常久依然无法编译通过,无奈只能放弃,如果有大神能跑起来还望指教一二,在此谢过了。)
Telegram的AngularJs开源代码地址(本人主攻方向为Android,js相关并不熟悉,所以也只是跑了下,可以运行)
Telegram的php开源代码地址(这一套代码是可以运行的,本人还特地抽离了工具包封装到了Laravel运行,无奈Laravel每一个请求都是不同的线程,无法复用一个连接实例,导致每次调用Telegram相关api都需要走一遍登录操作,效率非常低,无奈只能放弃,如果有大神有解决方案还望指点。)
Telegram的python开源代码地址(这一套代码可以运行,而且很多方法调用都是没有问题,本人最终平衡后使用的是这一套代码,结合python的flask框架进行交互)
Telethon的api文档地址(Telethon就是Telegram的python开源工具代码)
-
因为文章这样结束显的有些短,就贴一些个人用到的可以调用方法贴出来了。
-
php相关
-
初始化
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]]);//创建示例 $this->MadelineProto->start();//开始登陆
-
发送消息(文中$username为获取的用户username,传入时前面加前缀@,如@test,$message则直接为想要发送的消息)
$this->MadelineProto->messages->sendMessage(['peer' => $username, 'message' => $message]);
-
加入群组($groupLink为群组加入链接,如https://t.me/testtttttt)
$this->MadelineProto->channels->joinChannel(['channel' => $groupLink]);
-
根据username获取用户详细信息
$this->MadelineProto->get_full_info($username);
-
根据关键字在全网查找联系人($search为过滤条件,不可为空字符串,$limit为获取个数,最大为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'];
-
根据群组信息获取群组所有用户信息($groupInfo可以是邀请链接或id,例如'https://t.me/danogentili'/'chat#492772765'/'channel#38575794')
$this->MadelineProto->get_pwr_chat($groupInfo);
-
-
python相关
-
初始化
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: '))
-
发送消息(其中user_id为用户id,message为需要发送的消息)
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)
-
根据群组信息获取群组所有用户信息
channel = client.get_entity(PeerChannel(int(in_id))) # 根据群组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 # 用户电话号码
-
-