
本文详解如何使用telethon库将telegram超级群组中被踢出/封禁的用户列表导出为txt或csv文件,涵盖代码修正、文件写入逻辑、数据结构处理及常见注意事项。
本文详解如何使用telethon库将telegram超级群组中被踢出/封禁的用户列表导出为txt或csv文件,涵盖代码修正、文件写入逻辑、数据结构处理及常见注意事项。
在使用 Telethon 获取被封禁(kicked)用户时,client.get_participants(..., filter=ChannelParticipantsKicked) 返回的是 User 对象列表,而非字符串或用户名——这是初学者常误用的关键点。直接 print(member) 或 file.write(member) 会触发 TypeError,因为 User 对象不可直接写入文本文件。必须显式提取所需字段(如 username、id、first_name、last_name),并妥善处理空值(例如 user.username is None)。
以下是完整、可运行的异步导出示例(支持 TXT 和 CSV 格式):
from telethon import TelegramClient
from telethon.tl.types import ChannelParticipantsKicked
import csv
api_id = 12345678 # 替换为你的 API ID
api_hash = 'your_api_hash_here' # 替换为你的 API Hash
group_id = -1001234567890 # 注意:超群组需用 -100 开头的 int 形式 ID
client = TelegramClient('session_name', api_id, api_hash)
async def export_kicked_users():
await client.start()
# 获取被封禁成员(支持分页,避免限流)
kicked_members = await client.get_participants(
group_id,
filter=ChannelParticipantsKicked,
limit=5000 # 显式限制,避免超时或内存溢出
)
# ✅ 方案一:导出为纯文本(每行:ID | Username | Name)
with open('kicked_users.txt', 'w', encoding='utf-8') as f:
f.write(f"{'ID':<p>⚠️ <strong>重要注意事项</strong>:</p>
- 权限与认证:首次运行会弹出 Telegram 登录二维码,需手机确认;确保账号有该群组的管理员权限(仅管理员可查看被封禁列表)。
-
ID 格式:
group_id必须为整数类型,如-1001234567890;若你拿到的是字符串"-123456789",请转为int(),且注意超群组 ID 前缀为-100。 -
性能优化:5000+ 用户建议启用
limit参数并考虑分页(offset+ 循环),避免单次请求失败;也可添加sleep(1)防触发反爬。 - 隐私与合规:导出用户数据需符合 Telegram Terms of Service 及当地隐私法规;禁止用于骚扰、营销或未经授权的数据传播。
最终生成的 kicked_users.txt 和 kicked_users.csv 将位于你 Python 脚本所在目录。打开终端执行 ls(macOS/Linux)或 dir(Windows)即可确认文件存在。如需进一步清洗或分析,推荐用 Pandas 加载 CSV 进行去重、统计或可视化。










