Telegram机器人6- 如何找出想要的群组?

大叔的python之路 andy 5年前 (2019-07-23) 20557次浏览 已收录 4个评论 扫描二维码

Telegram机器人6- 如何找出想要的群组?

一个正常的tg号一定会加入很多群组。
而我们要开始建立一个新群组的时候,一定少不了从原来的众多群组里拉一些人进新群,才会有基本的人数。
现在对 telegram群 完全不了解的情况下,我们想先了解群的结构,然後对照api。
进而实现从一个指定的群组把人拉到另一个群组,这样的目的。
所以我们今天就把群列出来,并且参照api文档,找出对我们有用的资料。

先上代码
Telegram机器人6- 如何找出想要的群组?

第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() 函数,

我们只贴出来部份需要说明的,
Telegram机器人6- 如何找出想要的群组?
上图这个是自已的信息
id 用户唯一识别
username 用户自已的唯一名称

然後是重头戏 群的信息
Telegram机器人6- 如何找出想要的群组?

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()

神隊友學長Andy , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Telegram机器人6- 如何找出想要的群组?
喜欢 (59)
[[email protected]]
分享 (0)
andy
关于作者:
中年大叔,打拼 like young students.
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(4)个小伙伴在吐槽
  1. 麻烦问下这个机器人程序有么
    中本葱2021-03-21 21:33 回覆
    • andy
      抱歉,忙碌了好一阵子,这个程式找不到了,不过我记得按照这一系列文章,要还原也不困难哦
      andy2021-05-20 01:09 回覆
  2. tg的群主和号码都联系不到你,请问怎么联系到你
    中本葱2021-03-21 21:50 回覆
    • andy
      我看看能不能找回 tg 的帐号,还是用 tg 比较安心
      andy2021-05-20 01:10 回覆