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

使用atproto包的Bluesky机器人突发故障求助

问题解决:TypeError: JwtPayload.init() got an unexpected keyword argument 'aud'

错误原因

11月7日Bluesky官方更新了认证接口的JWT返回格式,新增了aud(受众)字段,但你当前使用的旧版本atproto库的JwtPayload类并未定义该参数,导致登录解析JWT时抛出类型错误。

解决方案

方案1:升级atproto库到最新版本(推荐)

执行以下命令更新依赖,新版本已适配Bluesky的JWT格式变更:

pip install --upgrade atproto

更新后重新运行机器人代码即可。

方案2:临时修改库源码(仅应急用)

如果暂时无法升级,可找到本地/VPS上atproto库的auth.py文件(路径参考报错信息中的C:\Users\username\AppData\Local\Programs\Python\Python311\Lib\site-packages\atproto\xrpc_client\client\auth.py),修改JwtPayload类的定义,添加aud参数:

class JwtPayload(BaseModel):
    sub: str
    exp: int
    aud: Optional[str] = None  # 新增该行

保存后重新运行代码。

原机器人代码

import os
import sys
import glob
import time
import openai
from datetime import datetime
from atproto import Client, models
from random import randint

# API settings
openai.api_key = "..."
bluesky_api = Client('...')
bluesky_user_name = '...'
bluesky_password = '...'
bluesky_api.login(
  bluesky_user_name,
  bluesky_password
)

# Post Image
bluesky_images = []
imgs = glob.glob("/var/www/bsky/img/*")
i = randint(0, len(imgs) - 1) 
file_path = f'{imgs[i]}'
with open(file_path, "rb") as f:
  upload = bluesky_api.com.atproto.repo.upload_blob(f)
  bluesky_images.append(models.AppBskyEmbedImages.Image(alt='CatBot Photo', image=upload.blob))


# Post Body
chat = []
chat.append({"role": "system", "content": "..."})
chat.append({"role": "user", "content": "..."})
response = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=chat)
msg = response["choices"][0]["message"]["content"].lstrip()
    
bluesky_embed = models.AppBskyEmbedImages.Main(images=bluesky_images)

bluesky_api.com.atproto.repo.create_record(
    models.ComAtprotoRepoCreateRecord.Data(
        repo=bluesky_api.me.did,
        collection=models.ids.AppBskyFeedPost,
        record=models.AppBskyFeedPost.Main(
            createdAt=datetime.now().isoformat(), text=msg, embed=bluesky_embed
        ),
    )
)

报错信息

Traceback (most recent call last):
  File "D:\Desktop\bsky.py", line 15, in <module>                                                                        
    bluesky_api.login(                                                                                                  
  File "C:\Users\username\AppData\Local\Programs\Python\Python311\Lib\site-packages\atproto\xrpc_client\client\client.py", line 74, in login                                                                                                       
    session = self._get_and_set_session(login, password)                                                                 
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                 
  File "C:\Users\username\AppData\Local\Programs\Python\Python311\Lib\site-packages\atproto\xrpc_client\client\client.py", line 40, in _get_and_set_session                                                                                        
    self._set_session(session)                                                                                            
  File "C:\Users\username\AppData\Local\Programs\Python\Python311\Lib\site-packages\atproto\xrpc_client\client\methods_mixin\session.py", line 68, in _set_session                                                                                  
    self._refresh_jwt_payload = get_jwt_payload(session.refresh_jwt)                                                      
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                      
  File "C:\Users\username\AppData\Local\Programs\Python\Python311\Lib\site-packages\atproto\xrpc_client\client\auth.py", line 18, in get_jwt_payload                                                                                               
    return JwtPayload(**plain_payload)                                                                                    
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                    
TypeError: JwtPayload.__init__() got an unexpected keyword argument 'aud'                                               

内容的提问来源于stack exchange,提问作者Blind Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 15:24:53