nonebot的Bison插报错(已解决):TypeError: AsyncClient.__init__() got an unexpected keyword argument ‘proxies‘

前因

因为QQ刷的比b站多,并且b站存在着吞动态的情况,于是,想到各个群几乎都有QQ机器人,但是上架的机器人的似乎并没有这种功能,于是笔者便打算简单搭建一个。
这里我选用了nonebot2+lagrange,因为nonebot2有着丰富的插件库,里面的bison插件便有着这种强大的功能。
在这里插入图片描述

经过

然而,笔者在使用这个插件的过程中,却频频报错,难以启动

报错一:无法订阅bilibili

在这里插入图片描述

解决方法:

按照提示启用即可,位置如下
在这里插入图片描述

报错二(题目):当进行到添加id操作时,后台直接报错:TypeError: AsyncClient.init() got an unexpected keyword argument ‘proxies’

在这里插入图片描述

在这里插入图片描述

原因

根据 PlugConfig 的定义,bison_proxy 是一个字符串或 None 类型,而 httpx 的最新版本需要通过 transport 参数传递代理设置。因此,当前报错的原因是 httpx.AsyncClient 不再支持直接通过 proxies 参数传递代理。

解决方法

将bison的utils包下的http.py原代码全部注释
在这里插入图片描述
替换成如下代码

import httpx
from httpx import AsyncClient, Proxy

from ..plugin_config import plugin_config

http_headers = {"user-agent": plugin_config.bison_ua}


def http_client(*args, **kwargs):
    # 设置代理,如果 bison_proxy 存在
    if plugin_config.bison_proxy:
        kwargs["transport"] = httpx.AsyncHTTPTransport(
            proxies={
                "all": plugin_config.bison_proxy,
            }
        )

    # 合并或设置 headers
    if headers := kwargs.get("headers"):
        new_headers = http_headers.copy()
        new_headers.update(headers)
        kwargs["headers"] = new_headers
    else:
        kwargs["headers"] = http_headers

    return AsyncClient(*args, **kwargs)

然后就可以正常继续操作了,推送功能也是正常(这里建议后台网页进行批量操作)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值