如何将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
相关产品推荐
相关产品推荐

