Telegram机器人6- 如何找出想要的群组?
一个正常的tg号一定会加入很多群组。
而我们要开始建立一个新群组的时候,一定少不了从原来的众多群组里拉一些人进新群,才会有基本的人数。
现在对 telegram群 完全不了解的情况下,我们想先了解群的结构,然後对照api。
进而实现从一个指定的群组把人拉到另一个群组,这样的目的。
所以我们今天就把群列出来,并且参照api文档,找出对我们有用的资料。
第4-11行 读取设置档, 不懂请参考 http://www.sbooker.com/2019/07/05/204/
第14行 dialog_title_list 函数 列出我们要的资讯 以方便对照api文档
第19行 使用 for 来迭代 app.iter_dialogs() 就能列出所有的对话, 这是本文的第一个重点
第20行 列出对话的资讯, 以对照文档, 这是本文的第二个重点
第21行 这是後来我们知道了 dialog 的内容後,要打印出来的群的标题(title),还有群资讯
群资讯也是要用来对照文档, 这是第三个重点
第24行 运行 pyrogram
第25行 打印出自已的信息(可省略)
第26行 运行 app.iter_dialogs() 函数,
我们只贴出来部份需要说明的,
上图这个是自已的信息
id 用户唯一识别
username 用户自已的唯一名称
chat 内容是说明目前这个 dialog 是属於哪个 chat ,这是我们要再深入探索的
top_message 最後一条讯息的相关信息
对话的完整信息请参考 https://docs.pyrogram.org/api/types?highlight=top_message#pyrogram.Dialog
我们发现 没有什麽有用的信息,再全部看过内容之後,知道要再往下找 chat 内容
所以我们再往下看 chat 内容, https://docs.pyrogram.org/api/types#pyrogram.Chat
大略看过 chat 的内容发现,比较符合我们对群信息的定义,所以我们初步的认为 chat 就是群的定义。
其中现阶段比较重要的列举如下
id 是群的唯一识别, 以後我们靠这个识别来定位群
type 是这个群的类型有几个类型说明如下
private 私人对话
bot 机器人
group 一般群
supergroup 超级群,意思是你有管理权限的群。
channel 频道, 用户不能聊天,只有创建者能发信息的叫频道
title 群标题 私人对话 private 没有这个属性
username 跟title 类似,但每种类型的群都会有, 指的各不一样。
所以我们後来在第21行才会打印出chat 跟 chat.title
这就代表了 群信息 跟 群名称
按照这个思路往下走,接下来我们就是利用名称比对我们要的群名称,然後找出所有用户,最後邀请进入目标群。
下一篇来实现 比对群名然後找出所有用户
参考
python3 恰到好处的 configparse 教程 http://www.sbooker.com/2019/07/05/204/
对话的信息请参考 https://docs.pyrogram.org/api/types#pyrogram.Dialog
群的信息请参考 https://docs.pyrogram.org/api/types#pyrogram.Chat
完整代码
from pyrogram import Client, Filters import configparser config = configparser.ConfigParser() config.read('../data/config.ini') section = 'user_5456' # user_5456 user_5310 user = { "session": config.get(section, 'session'), "api_id": config.get(section, 'api_id'), "api_hash": config.get(section, 'api_hash'), } def dialog_title_list(): """ 列出所有的聊天 :return: """ for _dialog in app.iter_dialogs(): print(_dialog) print(_dialog.chat.title, _dialog.chat) with Client(user['session'], user['api_id'], user['api_hash']) as app: print(app.get_me()) dialog_title_list()