簡體   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