初学者咨询:Python Telethon能否通过CSV添加公开Telegram群成员
可以用Telethon实现CSV批量添加用户到Telegram公开群组
当然可以,只要你是目标公开群组的管理员,就能用Telethon完成这个需求。下面是具体的实现步骤和注意事项:
前置准备
- 安装Telethon:
pip install telethon - 前往my.telegram.org,用自己的Telegram账号登录,申请API ID和API Hash
- 整理CSV文件:确保文件中存储的是用户的用户名(带@)或用户ID(优先用ID,避免用户名变更导致添加失败)
实现代码示例
from telethon import TelegramClient import csv import asyncio # 替换为你的API信息 API_ID = 你的API_ID数字 API_HASH = '你的API_HASH字符串' SESSION_NAME = '自定义会话名称,比如group_add_session' # 目标公开群组的用户名(例如@my_public_group)或群组ID TARGET_GROUP = '@my_public_group' # CSV文件路径,假设CSV第一列是用户标识(ID或用户名) CSV_FILE = 'users.csv' async def add_users_from_csv(): async with TelegramClient(SESSION_NAME, API_ID, API_HASH) as client: # 获取目标群组的实体对象 group_entity = await client.get_entity(TARGET_GROUP) # 读取CSV中的用户列表 user_list = [] with open(CSV_FILE, 'r', encoding='utf-8') as f: csv_reader = csv.reader(f) next(csv_reader) # 若CSV有表头则跳过,无表头请注释此行 for row in csv_reader: user = row[0].strip() # 尝试将用户标识转换为整数ID(如果是数字格式) try: user = int(user) except ValueError: pass user_list.append(user) # 分批添加用户,规避Telegram频率限制 batch_size = 8 # 每次最多添加10个,建议设小些更安全 for idx in range(0, len(user_list), batch_size): batch = user_list[idx:idx+batch_size] try: await client.add_chat_members(group_entity.id, batch) print(f"第{idx//batch_size +1}批用户添加成功") await asyncio.sleep(15) # 每批添加后暂停15秒,降低被限制风险 except Exception as e: print(f"添加失败:{str(e)}") if __name__ == '__main__': asyncio.run(add_users_from_csv())
关键注意事项
- 频率限制:Telegram反垃圾机制严格,短时间内批量加人极易触发操作限制,甚至临时封禁账号。务必分批处理并添加延迟,不要追求速度。
- 权限验证:你必须是目标群组的管理员,且拥有「添加成员」的权限;仅能添加公开可见的用户,私密账号无法被添加。
- 数据准确性:用户ID是固定标识,比用户名更可靠(用户可修改用户名)。若CSV中存储的是用户名,需确保格式正确(带@前缀)。
内容的提问来源于stack exchange,提问作者International programmer
相关产品推荐
相关产品推荐

