Drincann / Mirai-js

运行在 Node.js、浏览器下,基于 mirai-api-http 的 QQ 机器人开发框架。
https://mirai-js-drincann.vercel.app
GNU Affero General Public License v3.0
252 stars 31 forks source link

mirai-js@2.8.11在搭配mirai-api-http-2.9.1使用时出现Unexpected server response: 404 #239

Closed FragileCodes closed 11 months ago

FragileCodes commented 11 months ago

代码如下

import` pkg from 'mirai-js';

const { Bot, Message, Middleware, } = pkg;
import { QQBotConfig as config } from '../config.js';

const bot = new Bot();
await bot.open({
    baseUrl: config.baseUrl,
    verifyKey: config.verifyKey,
    qq: config.qqBotId,
});

config里的参数应该是没问题的,并且我测试了一下,在没有在mirai中登录qq的时候,会出现错误 Error: 指定Bot不存在 说明baseUrl、verifyKey、qq这三个参数应该是没问题的? 登录qq之后遇到的报错就是下面这样。

下面是日志: Uncaught Error Error: Unexpected server response: 404 at abortHandshake (c:\项目路径省略\node_modules\ws\lib\websocket.js:1062:9) at (c:\项目路径省略\node_modules\ws\lib\websocket.js:896:7) at emit (events:394:28) at parserOnIncomingClient (_http_client:621:27) at parserOnHeadersComplete (_http_common:128:17) at socketOnData (_http_client:487:22) at emit (events:394:28) at addChunk (internal/streams/readable:315:12) at readableAddChunk (internal/streams/readable:289:9) at Readable.push (internal/streams/readable:228:10) at onStreamRead (internal/stream_base_commons:199:23) at callbackTrampoline (internal/async_hooks:130:17) --- TickObject --- at init (internal/inspector_async_hook:25:19) at emitInitNative (internal/async_hooks:205:43) at emitInitScript (internal/async_hooks:495:3) at nextTick (internal/process/task_queues:133:5) at abortHandshake (c:\项目路径省略\node_modules\ws\lib\websocket.js:1077:13) at (c:\项目路径省略\node_modules\ws\lib\websocket.js:896:7) at emit (events:394:28) at parserOnIncomingClient (_http_client:621:27) at parserOnHeadersComplete (_http_common:128:17) at socketOnData (_http_client:487:22) at emit (events:394:28) at addChunk (internal/streams/readable:315:12) at readableAddChunk (internal/streams/readable:289:9) at Readable.push (internal/streams/readable:228:10) at onStreamRead (internal/stream_base_commons:199:23) at callbackTrampoline (internal/async_hooks:130:17) --- HTTPCLIENTREQUEST --- at init (internal/inspector_async_hook:25:19) at emitInitNative (internal/async_hooks:205:43) at tickOnSocket (_http_client:725:10) at onSocketNT (_http_client:815:5) at processTicksAndRejections (internal/process/task_queues:84:21) --- TickObject --- at init (internal/inspector_async_hook:25:19) at emitInitNative (internal/async_hooks:205:43) at emitInitScript (internal/async_hooks:495:3) at nextTick (internal/process/task_queues:133:5) at onSocket (_http_client:784:11) at (_http_client:315:16) at (internal/util:446:5) at ClientRequest (_http_client:323:11) at request (http:96:10) at initAsClient (c:\项目路径省略\node_modules\ws\lib\websocket.js:851:28) at WebSocket (c:\项目路径省略\node_modules\ws\lib\websocket.js:85:7) at module.exports (c:\项目路径省略\node_modules\mirai-js\dist\node\core\startListeningNode.js:44:16) at __wsListen (c:\项目路径省略\node_modules\mirai-js\dist\node\Bot.js:227:31) at open (c:\项目路径省略\node_modules\mirai-js\dist\node\Bot.js:213:16) at processTicksAndRejections (internal/process/task_queues:96:5) --- async function --- at (c:\项目路径省略\src\index.js:18:11) at run (internal/modules/esm/module_job:183:25) --- async function --- at import (internal/modules/esm/loader:178:34) at processTicksAndRejections (internal/process/task_queues:96:5) --- async function --- at (internal/modules/run_main:49:28) at loadESM (internal/process/esm_loader:68:11) at processTicksAndRejections (internal/process/task_queues:96:5) --- async function --- at runMainESM (internal/modules/run_main:46:31) at executeUserEntryPoint (internal/modules/run_main:76:5) at (internal/main/run_main_module:17:47)

其中c:\项目路径省略\src\index.jsindex.js就是最上方的代码。 我所使用的mirai版本为2.16.0,mirai-api-http插件版本为2.9.1 我之前正常使用mirai-js@2.0.3已经两年了,今天不小心在手机上登录了机器人qq导致服务器上的号被顶掉了,想重新登录发现要过签名,不得已升级了mirai版本,同时也升级了mirai-api-http版本,以及mirai-js版本,之后就变成这样了。

Drincann commented 11 months ago

晚点我会看一下,欢迎 pr。

FragileCodes commented 11 months ago

万分感激!但是我没那个实力解决…恐怕帮不上什么忙 这是我的mirai-api-http的setting.yml,我没有使用ws,会是这个原因吗? adapters:

FragileCodes commented 11 months ago

抱歉,问题已经解决了,是我在mirai-api-http的setting.yml里忘记设置ws了,太久没改过这些配置,结果疏忽了。 现在运行一切正常,感谢您写的程序,对我帮助很大。

Drincann commented 11 months ago

好的,感谢支持!