You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telethon单客户端能否管控Bot与Userbot?多技术问题咨询

问题解答

一、核心疑问:是否必须用独立客户端操作Bot和个人账号?

不需要单独开两个客户端,但单客户端同一时间只能用一个身份操作——你可以切换身份,但没法同时并行使用Bot和个人账号。如果要同时操作两者,还是得创建两个独立的客户端实例(各自对应不同的会话文件)。

二、单客户端切换身份的注意事项

Telethon的客户端实例绑定一个会话文件,两次start()调用会覆盖当前客户端的授权身份:

  • 如果会话文件已经保存了一个授权用户(比如个人账号),再调用start(phone=...)就会触发你看到的UserWarning——这是正常提示,意思是会话已有授权,不会用传入的手机号重新登录,避免覆盖原有身份。
  • 官方文档的示例是演示切换身份的流程,不是同时控制两个身份,不存在文档错误。

三、你遇到的错误解决方法

1. UserWarning: session already had an authorized user

  • 若要切换到新的个人账号:先调用client.log_out()登出旧身份,或者直接删除对应的会话文件,再重新调用start(phone=...)
  • 若要保留原有授权:直接跳过start()调用,客户端会自动加载会话里已保存的身份

2. RuntimeError: You must use "async with" if the event loop is running

在异步函数里必须用async with替代同步的with语句,正确写法:

async def main():
    async with client:
        await client.send_message("username", "hello")

3. IDE提示手机号字符串不符合typing.Callable[[], str]类型

start()的phone参数支持两种输入:

  • 直接传字符串(部分旧版本Telethon或IDE类型检测可能误判)
  • 传一个无参函数返回手机号(适配类型要求),示例:
def get_my_phone():
    return "你的手机号"

await client.start(phone=get_my_phone)

也可以升级Telethon到最新稳定版,新版本对参数类型的兼容性更好。

内容的提问来源于stack exchange,提问作者Flana Ban

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:55:19