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

Telethon中使用StringSession初始化TelegramClient时自定义授权参数失效的问题咨询

Telethon中使用StringSession初始化TelegramClient时自定义授权参数失效的问题咨询

我来帮你分析下问题出在哪哈~

你遇到的核心问题是:StringSession只存储Telegram的授权凭证信息,并不会保存你初始化TelegramClient时设置的客户端配置参数,比如device_model、system_version、app_version这些。

问题重现的原因

  • 第一次用StringSession()初始化客户端时,你确实传入了自定义参数,这时候授权请求会带着这些参数发送给Telegram,所以授权过程是正常的;
  • 但当你用保存的string会话字符串重新创建TelegramClient实例时,你只传了StringSession(string)、api_id和api_hash,完全没带上那些自定义的客户端参数,这时候Telethon会自动使用默认的授权参数来建立连接,自然就覆盖了你之前设置的内容。

而你用sqlite session的时候看起来正常,是因为sqlite会话文件会和第一次初始化时的客户端配置关联起来,每次启动都会复用那些参数,但StringSession没有这个特性。

解决方案

每次创建TelegramClient实例(包括用保存的StringSession重新初始化时),都必须显式传入所有自定义的客户端参数,不能省略。修改你第二次初始化客户端的代码:

client = TelegramClient(
    StringSession(string), 
    api_id, 
    api_hash,
    device_model='iPhone 13 Pro Max',
    system_version='Windows 10',
    app_version='3.7.3'
)

这样重新连接并登录时,Telethon就会使用你指定的自定义参数,而不是默认值了。

另外提醒下,如果你希望后续每次启动客户端都不用重复写这些参数,可以把它们封装成一个配置字典,方便复用:

client_config = {
    "device_model": "iPhone 13 Pro Max",
    "system_version": "Windows 10",
    "app_version": "3.7.3"
}

# 第一次初始化
client = TelegramClient(StringSession(), api_id, api_hash, **client_config)

# 后续用保存的StringSession初始化
client = TelegramClient(StringSession(saved_string), api_id, api_hash, **client_config)

这样能避免遗漏参数,也更便于维护。

备注:内容来源于stack exchange,提问作者Sergey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 11:13:04