1. 报错详细

05-27 14:54:21 [ERROR] nonebot | QQ | Error while setup websocket to wss://api.sgroup.qq.com/websocket. Trying to reconnect...
Traceback (most recent call last):
File "/Users/xiayuan/Documents/Code/modernia-bot/bot.py", line 17, in <module>
nonebot.run()
File "/Users/xiayuan/Documents/Code/modernia-bot/.venv/lib/python3.13/site-packages/nonebot/__init__.py", line 337, in run
get_driver().run(*args, **kwargs)
File "/Users/xiayuan/Documents/Code/modernia-bot/.venv/lib/python3.13/site-packages/nonebot/drivers/fastapi.py", line 187, in run
uvicorn.run(
File "/Users/xiayuan/Documents/Code/modernia-bot/.venv/lib/python3.13/site-packages/uvicorn/main.py", line 580, in run
server.run()
File "/Users/xiayuan/Documents/Code/modernia-bot/.venv/lib/python3.13/site-packages/uvicorn/server.py", line 66, in run
return asyncio.run(self.serve(sockets=sockets))
File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/asyncio/runners.py", line 194, in run
return runner.run(main)
File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
> File "/Users/xiayuan/Documents/Code/modernia-bot/.venv/lib/python3.13/site-packages/nonebot/adapters/qq/adapter.py", line 200, in _forward_ws
async with self.websocket(request) as ws:
File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/contextlib.py", line 214, in __aenter__
return await anext(self.gen)
File "/Users/xiayuan/Documents/Code/modernia-bot/.venv/lib/python3.13/site-packages/nonebot/internal/adapter/adapter.py", line 99, in websocket
async with self.driver.websocket(setup) as ws:
File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/contextlib.py", line 214, in __aenter__
return await anext(self.gen)
File "/Users/xiayuan/Documents/Code/modernia-bot/.venv/lib/python3.13/site-packages/nonebot/drivers/websockets.py", line 81, in websocket
async with connection as ws:
File "/Users/xiayuan/Documents/Code/modernia-bot/.venv/lib/python3.13/site-packages/websockets/legacy/client.py", line 633, in __aenter__
return await self
File "/Users/xiayuan/Documents/Code/modernia-bot/.venv/lib/python3.13/site-packages/websockets/legacy/client.py", line 652, in __await_impl__
_transport, protocol = await self._create_connection()
File "uvloop/loop.pyx", line 2088, in create_connection
raise
File "uvloop/loop.pyx", line 2083, in uvloop.loop.Loop.create_connection
await ssl_waiter
File "uvloop/sslproto.pyx", line 517, in uvloop.loop.SSLProtocol._on_handshake_complete
raise handshake_exc
File "uvloop/sslproto.pyx", line 499, in uvloop.loop.SSLProtocol._do_handshake
self._sslobj.do_handshake()
File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/ssl.py", line 951, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1020)

问题分析(来自GPT):

这是一个典型的 SSL 证书验证失败 错误,原因是 NoneBot 的 QQ 适配器尝试连接 wss://api.sgroup.qq.com/websocket 时,发现返回的证书链中包含了自签名证书(self-signed certificate),而你的 Python 解释器出于安全考虑默认拒绝了它。

这通常在以下几种情况下出现:

系统或 Python 没有正确的 CA 根证书列表(在 macOS 上尤其常见)。

你本地或中间代理劫持了 SSL 流量并使用了自签名证书(比如公司内网、某些防火墙、某些 VPN)。

QQ 的服务器有问题,但可能性较小。

解决办法

使用 Python 安装证书工具(macOS 推荐)

你是在 macOS 下运行的 Python 3.13,可以尝试运行:

/Applications/Python\ 3.13/Install\ Certificates.command

这个命令会安装或修复 Python 使用的系统根证书,解决大部分 macOS 上的 CERTIFICATE_VERIFY_FAILED 问题。

其他关键词

nonebot2连接报错

QQ机器人websocket连接报错

【nonebot2】QQ适配器websocket连接报错的更多相关文章

  1. 解决oracle服务器重启之后连接报错的问题

    DB服务器重启之后再连接报错如下: 原因是重启之后listener.ora被还原成初始文件,sid被清空. 解决步骤: 1.查看监听服务和数据库服务: 由此找到listener.ora文件的路径:D: ...

  2. 监听报错 TNS-00525: Insufficient privilege for operation 11gR2 + 连接报错ORA-12537: TNS:connection closed

    1.TNS-00525: Insufficient privilege for operation Started with pid= Listening on: (DESCRIPTION=(ADDR ...

  3. Oracle SQL Developer连接报错(ORA-12505)

    Oracle SQL Developer连接报错(ORA-12505) 之前我的Oracle数据库出现问题,费大波周折终于弄好了,今天又创建了一个DBA管理员的连接方式出现问题,本人现在把解决方案分享 ...

  4. 启动tomcat直接报错:org.apache.tomcat.util.digester.Digester startElement

    今天很奇怪,自己手动搭建了一个ssm(spring+springmvc+mybatis)的项目,然后添加到tomcat下,启动直接报错: 2017-3-19 9:24:47 org.apache.to ...

  5. Jmeter录制脚本过程及Could not create script recorder报错、您的连接不是私密连接报错

    转载自    https://www.cnblogs.com/wwho/p/7173172.html Jmeter录制脚本过程及Could not create script recorder报错.您 ...

  6. Oracle 12c SQL Developer连接报错(ORA-12505)

    Oracle 12c SQL Developer连接报错(ORA-12505) 连接时报错码:Listener refused the connection with following error: ...

  7. 二、Jmeter录制脚本过程及Could not create script recorder报错、您的连接不是私密连接报错

    两个报错:Could not create script recorder报错和您的连接不是私密连接报错 1.录制过程 * 打开jmeter * 点击Templated,选择Recoding模版 * ...

  8. ssh连接报错Write failed: Broken pipe Resource temporarily unavailable

    问题描述 使用root连接服务器正常,切换普通用户连接报错 具体报错如下:Write failed: Broken pipe 或者:failed to execute /bin/bash: Resou ...

  9. Mysql远程连接报错:SQL Error (1130): Host '192.168.61.128' is not allowed to connect to this MySQL server

    Mysql远程连接报错:SQL Error (1130): Host '192.168.0.18' is not allowed to connect to this MySQL server     ...

  10. Python 字符串与数字拼接报错

    Python 不像 JS 或者 PHP 这种弱类型语言里在字符串连接时会自动转换类型,而是直接报错. 如: 上述是Python 字符串与数字拼接报错,解决办法是:使用bytes函数把int型转换为st ...

随机推荐

  1. vscode安装离线插件autopep8

    商店 从上面的链接进去,在visual studio code一栏开始搜索,我要的是autopep8,所以搜索得到的是这样的: 点进去后,是这个界面,然后我是离线下载,要的是拓展包,所以是下面操作 下 ...

  2. rabbitmq的高级部分

    producer的XML配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&quo ...

  3. 一条 SQL 语句在 MySQL 中的执行过程

    一条 SQL 语句在 MySQL 中的执行过程 当一条 SQL 语句被提交到 MySQL 时,它会经历多个步骤,包括解析.优化.执行等.以下以 SELECT 语句为例,详细描述整个执行流程. 1. 客 ...

  4. 借助 QT 的反射机制实现数据类的序列化

    在 C++ 工程中经常需要使用数据类,并对数据类进行存储.打印.调试等操作.由于数据类中有大量数据字段,每次都编写存储或输出数据内容,工作重复量太大.C++ 不支持用户自定义的注解,所以没办法使用类似 ...

  5. Rust实战系列-深入理解数据

    本文是<Rust in action>学习总结系列的第五部分,更多内容请看已发布文章: 一.Rust实战系列-Rust介绍 二.Rust实战系列-基本语法 三.Rust实战系列-复合数据类 ...

  6. Filter与Interceptor的区别

    前言 在看springboot项目时,其中的会话持续时,了解到token,session,jwt等方法,但是接着我就了解到过滤器(Filter)以及拦截器(Interceptor),感觉这两个东西真的 ...

  7. 自己搭建一个https的dns,让不同的浏览器使用不同的DNS,使用相同的域名访问到不同的主机上

    我有一个web项目,使用域名访问,需要同时运行线上环境和测试环境,为了防止一些css.js缓存影响,在不同的浏览器里分别访问线上环境和测试环境,比如Chrome浏览器访问测试环境,而Safari浏览器 ...

  8. TVM:解析TVM算子

    在对TVM:编译流程一文中,从ONNX模型中读取模型并转换为relay IR,其中调用_convert_operator函数关于将onnx算子转换成Relay算子,其中如何实现当时直接跳过去了,本节将 ...

  9. RPC实战与核心原理之动态分组

    动态分组:超高效实现秒级扩缩容 回顾 在 RPC 里面怎么支持流量回放,应用在引入 RPC 后,所有的请求都会被 RPC 接管,而我们在 RPC 里面引入回放的原因也很简单,就是想通过线上流量来验证改 ...

  10. Visual Studio 2019 + GLFW + GLAD

    !!!如果文件正常引入,但依然各种报错找不到C++源文件,可能是版本问题 即现在是x64,调成x32,以及glfw建议下载32版本 参考文章:https://blog.csdn.net/zjz520y ...