如何用Python的ImportChatInviteRequest向Telegram频道批量添加用户
问题原因说明
你调用的ImportChatInviteRequest接口的设计功能是让当前登录的客户端认证账号自己使用邀请链接加入对应频道/群组,本身就不具备邀请其他用户加入的能力,所以才会出现仅尝试添加你自己的情况,你已经是频道成员,自然会触发报错The authenticated user is already a participant of the chat。
批量添加用户到频道的实现方案
你不能用ImportChatInviteRequest实现批量邀请其他用户的需求,需要改用InviteToChannelRequest接口,前提条件如下:
- 你登录的账号是目标频道的管理员,且具备「邀请用户」的权限
- 你要邀请的用户没有开启「禁止被邀请到群组/频道」的隐私设置,且你可以正常获取到该用户的ID/username对象
实现代码示例
from telethon import TelegramClient from telethon.tl.functions.channels import InviteToChannelRequest # 替换为你自己的Telegram API参数 API_ID = 你的API_ID数值 API_HASH = "你的API_HASH字符串" PHONE = "你的手机号,带国际区号,例:+8613xxxxxxxxx" # 目标频道标识,也可以直接填频道公开用户名,例:"@your_channel_username" TARGET_CHANNEL = 123456789 # 要邀请的用户标识列表,可以填用户ID或者用户名 USER_LIST_TO_INVITE = ["@user1", "@user2", 987654321] async def batch_invite_users(): async with TelegramClient(PHONE, API_ID, API_HASH) as client: # 获取目标频道实体 target_channel = await client.get_entity(TARGET_CHANNEL) # 批量获取要邀请的用户实体 user_entities = [] for user in USER_LIST_TO_INVITE: try: user_entity = await client.get_entity(user) user_entities.append(user_entity) except Exception as e: print(f"获取用户{user}信息失败:{str(e)}") # 调用邀请接口 if user_entities: await client(InviteToChannelRequest( channel=target_channel, users=user_entities )) print(f"已提交{len(user_entities)}个用户的邀请请求") # 运行异步任务 import asyncio asyncio.run(batch_invite_users())
注意事项
- 单次调用接口最多只能邀请200个用户,超出数量需要分批处理
- 不要短时间内高频调用接口,否则会触发Telegram风控,轻则临时限制加人权限,重则封号
- 邀请非联系人用户的成功率更低,且更容易触发风控限制
内容的提问来源于stack exchange,提问作者Abel Legesse
相关产品推荐
相关产品推荐

