繁体   English   中英

如何修复 TypeError: __init__() got an unexpected keyword argument 'session_name'?

[英]how to fix TypeError: __init__() got an unexpected keyword argument 'session_name'?

我试图将此机器人部署到heroku,但出现此错误

File "/app/bot/utubebot.py", line 8, in __init__
super().__init__(
TypeError: __init__() got an unexpected keyword argument 'session_name'

utubebot.py 代码

from pyrogram import Client

from .config import Config


class UtubeBot(Client):
def __init__(self):
    super().__init__(
        session_name=Config.SESSION_NAME,
        bot_token=Config.BOT_TOKEN,
        api_id=Config.API_ID,
        api_hash=Config.API_HASH,
        plugins=dict(root="bot.plugins"),
        workers=6,
    )
    self.DOWNLOAD_WORKERS = 6
    self.counter = 0
    self.download_controller = {}

说实话,我是 python 的菜鸟,我需要详细的帮助 plz :)

我没有足够的声誉来评论 Silvio 的答案,但他得到了一半的答案。 您链接的机器人的作者实际上是指session_name ,但您会注意到该应用程序的最新版本于 2021 年 6 月 27 日发布。当时,它调用pyrogram的最新版本库位于1.xx 构建并在Client类中采用了session_name参数。 从 2.0.0 版开始,它不再适用。 解决方案是将pyrogram的依赖版本降级为与开发utube的 API 相匹配的版本,或者升级utube以满足新的 API。

这就是为什么在requirements.txt文件中指定依赖项的版本很重要的原因——如果作者锚定了版本,说类似pyrogram==1.2.0 ,错误就不会出现。 当您不指定版本时(就像作者所做的那样,就像pyrogram一样),即使有重大更改,也会安装最新版本。

链接到pyrogram v1.2.0 中的Client实现,这是utube最新版本之前的最新版本: https ://github.com/pyrogram/pyrogram/blob/v1.2.0/pyrogram/client.py。 请注意,构造函数确实包含session_name ,并且与最新版本的结构完全不同,链接在这里: https ://github.com/pyrogram/pyrogram/blob/master/pyrogram/client.py。 看起来session_name实际上已重命名为session_string ,但它的处理和验证方式的语义有点不同。

Client构造函数不采用session_name参数。 您可以在该链接上看到已接受参数的完整列表。 也许您的意思是namesession_string 从您显示的代码中很难分辨,因此我建议您阅读该页面并查看您要传递的参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM