如何使用Pyrogram库转移Telegram频道所有权?
使用Pyrogram转移Telegram频道所有权
promote_chat_member确实无法完成频道所有权转移——这个方法仅用于分配管理员权限,不涉及所有权变更。要转移频道所有权,必须使用Pyrogram提供的底层API方法pyrogram.raw.functions.channels.EditCreator,以下是具体使用步骤和代码示例:
核心步骤
- 确认你是频道的现任所有者,且目标用户已加入该频道。
- 通过
resolve_peer方法获取频道和目标用户的底层对象(InputChannel和InputUser),无需手动构造。 - 调用
EditCreator方法,若账号开启两步验证,需额外处理密码验证。
基础使用代码(无两步验证)
from pyrogram import Client from pyrogram.raw.functions.channels import EditCreator app = Client("your_session_name") async def transfer_channel_owner(channel_identifier, target_user_identifier): async with app: # 将频道ID/用户名转换为InputChannel对象 channel = await app.resolve_peer(channel_identifier) # 将目标用户ID/用户名转换为InputUser对象 target_user = await app.resolve_peer(target_user_identifier) # 执行所有权转移 await app.invoke( EditCreator( channel=channel, user_id=target_user ) ) print("频道所有权已成功转移") # 替换为你的频道ID/用户名,以及目标用户的ID/用户名 app.run(transfer_channel_owner("your_channel_username", "target_user_id"))
处理两步验证的情况
如果你的账号开启了两步验证,需要先获取SRP验证参数并构造密码对象,示例代码如下:
from pyrogram import Client from pyrogram.raw.functions.channels import EditCreator from pyrogram.raw.functions.account import GetPassword app = Client("your_session_name") async def transfer_with_2fa(channel_identifier, target_user_identifier, your_2fa_password): async with app: channel = await app.resolve_peer(channel_identifier) target_user = await app.resolve_peer(target_user_identifier) # 获取两步验证的SRP参数 password_info = await app.invoke(GetPassword()) # 计算验证所需的SRP值 srp_data = password_info.compute_check(your_2fa_password) # 执行转移(传入密码验证对象) await app.invoke( EditCreator( channel=channel, user_id=target_user, password=srp_data ) ) print("频道所有权已成功转移(已处理两步验证)") # 替换为对应参数 app.run(transfer_with_2fa("your_channel_username", "target_user_id", "your_2fa_pass"))
注意事项
resolve_peer支持接收频道/用户的ID、用户名(带@)等多种格式,无需手动构造底层对象。- 所有权转移是不可逆操作,执行前请务必确认目标用户身份。
- 若操作失败,检查是否满足:你是现任所有者、目标用户已加入频道、两步验证密码正确(若开启)。
内容的提问来源于stack exchange,提问作者Kuchizu
相关产品推荐
相关产品推荐

