![](/img/trans.png)
[英]How to fix 'TypeError: __init__() got an unexpected keyword argument 'sender''
[英]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
參數。 您可以在該鏈接上看到已接受參數的完整列表。 也許您的意思是name
或session_string
。 從您顯示的代碼中很難分辨,因此我建議您閱讀該頁面並查看您要傳遞的參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.