You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Pyrogram get_chat_members获取的用户ID写入独立文件

Pyrogram 提取Telegram群成员ID/用户名写入文件实现

核心逻辑

get_chat_members 返回的每一项都是封装好的 ChatMember 对象,不需要额外解析JSON结构,直接通过属性访问就能拿到嵌套的用户数据:

  • 用户ID存储在 member.user.id 字段,所有用户都有该值
  • 用户名存储在 member.user.username 字段,为用户可选设置项,未设置时值为None

完整实现代码

补全现有框架的代码如下,运行后会在脚本同级目录生成对应存储文件:

from pyrogram import Client

# 目标群组ID
TARGET_CHAT_ID = -10011796008
# 存储文件路径
USER_ID_OUTPUT = "group_user_ids.txt"
USERNAME_OUTPUT = "group_usernames.txt"

app = Client("my_account")

async def main():
    async with app:
        # 打开文件待写入,指定utf-8编码避免特殊字符报错
        with open(USER_ID_OUTPUT, "w", encoding="utf-8") as id_file, \
             open(USERNAME_OUTPUT, "w", encoding="utf-8") as username_file:
            
            # 遍历群成员:测试时保留limit=1仅拉取1条数据,拉取全量成员直接删除limit参数即可
            async for member in app.get_chat_members(TARGET_CHAT_ID, limit=1):
                # 提取用户ID写入文件,每行一个ID
                user_id = member.user.id
                id_file.write(f"{user_id}\n")

                # 提取用户名,判空后写入,需要带@前缀就保留@,不需要就删除
                username = member.user.username
                if username:
                    username_file.write(f"@{username}\n")

app.run(main())

注意事项

  • Pyrogram的get_chat_members内置了分页处理逻辑,删除limit参数后会自动拉取群内所有成员,不需要手动编写翻页代码
  • 拉取万人以上大群成员时,建议在循环内加适当延时,避免触发Telegram接口频率限制导致账号被临时限制
  • 未设置用户名的用户会自动跳过用户名写入逻辑,不会抛出类型错误
  • 如果只需要提取用户ID,直接删掉用户名相关的文件操作和提取逻辑即可

内容的提问来源于stack exchange,提问作者NifCode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 08:30:47