17TheWord / nonebot-plugin-mcqq

基于NoneBot的与Minecraft Server互通消息的插件
MIT License
89 stars 4 forks source link

【错误反馈】貌似无法正常加载.env.prod内的配置 #105

Closed LeoBlackMT closed 1 month ago

LeoBlackMT commented 1 month ago

运行环境

WindowsServer2016;Python 3.12;Fabric.0.15.11-MC1.20.1

NB插件及版本号

nb-cli-1.4.1;NoneBot-Plugin-MCQQ-2.5.7

MC插件及版本号

MC_QQ_Fabric_1.20.1-2.6.5

错误描述

问题发现

今日在尝试为我的服务器添加mcqq互通时,发现一直报错”无法找到服务器 Server 的配置,将无法配置目标群聊“,rcon也无法连接(websocket连接正常)。尝试过新创建并只安装一个插件,问题也不会消失。

问题复现

  1. 使用nb create ,新建一个项目
  2. 安装Onebot v11,Minecraft和QQ适配器以及fastapi,websockets和httpx驱动器
  3. cd到bot目录,使用nb plugin install nonebot-plugin-mcqq 安装插件
  4. 对.env.prod修改,内容如下:
    
    DRIVER=~fastapi+~httpx+~websockets

mc_qq__chat_image_enable = true

mc_qq__server_dict = '{ "Server": { "group_list": [ { "group_id": "91**55", "adapter": "onebot", "bot_id": "19*****75" } ], "rcon_msg": false, "rcon_cmd": true } }'

minecraft_server_rcon = '{ "Server": { "enable_rcon": true, "rcon_port": 25575, "rcon_password": "p*****0" } }'

其余所有配置项均保持默认不变。
5. nb run (已确保minecraft适配器正常加载)
6. 与此同时MC服务器和gocq开启,并且成功连接ws

nonebot输出: 06-18 22:58:57 [INFO] uvicorn | Uvicorn running on http://127.0.0.1:8080 (Press CTRL+C to quit) 06-18 22:58:58 [INFO] uvicorn | ('127.0.0.1', 49906) - "WebSocket /onebot/v11/ws" [accepted] 06-18 22:58:58 [INFO] nonebot | OneBot V11 | Bot 1***5 connected 06-18 22:58:58 [INFO] websockets | connection open 06-18 22:59:01 [INFO] uvicorn | ('127.0.0.1', 49907) - "WebSocket /minecraft/ws" [accepted] MinecraftFarbric输出: [22:59:01 INFO]: [MC_QQ] 连接至:ws://127.0.0.1:8080/minecraft/ws 的 WebSocket 连接已断开,尝试第 9 次重连... [22:59:01 INFO]: [MC_QQ] 已成功连接至 ws://127.0.0.1:8080/minecraft/ws 的 WebSocket 服务器!

7. 紧接着提示未找到配置文件

06-18 20:51:44 [INFO] nonebot | Minecraft | RCON configuration for Bot \u0053\u0065\u0072\u0076\u0065\u0072 not found, will not connect 06-18 20:51:44 [INFO] nonebot | Minecraft | Bot \u0053\u0065\u0072\u0076\u0065\u0072 connected 06-18 20:51:44 [INFO] websockets | connection open 06-18 20:51:44 [WARNING] nonebot_plugin_mcqq | [MC_QQ]丨未找到服务器 \u0053\u0065\u0072\u0076\u0065\u0072 的配置,将无法配置目标群聊

注:该问题稳定复现。

## 补充说明

- 在log开debug模式后,控制台可以在nonebot加载时看到已经成功加载了配置(详见下方),然而依旧提示未找到服务器的配置文件。
- 我曾怀疑是编码问题,将.env.prod重新编码utf-8时,出现了新的错误。

06-18 23:11:14 [SUCCESS] nonebot | NoneBot is initializing... 06-18 23:11:14 [INFO] nonebot | Current Env: prod Traceback (most recent call last): File "", line 15, in File "D:\Bot.venv\Lib\site-packages\nonebot\internal\driver\abstract.py", line 91, in register_adapter self._adapters[name] = adapter(self, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^ File "D:\Bot.venv\Lib\site-packages\nonebot\adapters\qq\adapter.py", line 50, in init self.setup() File "D:\Bot.venv\Lib\site-packages\nonebot\adapters\qq\adapter.py", line 59, in setup raise RuntimeError( RuntimeError: Current driver ~fastapi does not support http client requests! QQ Adapter need a HTTPClient Driver to work.

解决方法有两个:一个是将.env.prod第一行空出,其余往后挪一行;另一个是直接在第二行加入DRIVER=~httpx+~websockets
如果采用前者,还是回到了无法找到配置的问题;采用后者,nonebot的加载就会卡在”Application startup completed.“这一步。
- 提示未找到配置文件之后,在游戏内发出消息,控制台可以看到相关信息的响应。

## 预期结果

如果能解决最好,不能的话就算了。非常感谢!

### 报错日志(如果有)

```bash
问题复现部分的完整报告
D:\mcqq>nb run
使用 Python: D:\mcqq\.venv\Scripts\python.exe
06-18 22:58:49 [SUCCESS] nonebot | NoneBot is initializing...
06-18 22:58:49 [INFO] nonebot | Current Env: prod
06-18 22:58:49 [DEBUG] nonebot | Loaded Config: {'driver': '~fastapi+~httpx+~websockets', 'host': IPv4Address('127.0.0.1'), 'port': 8080, 'log_level': 'DEBUG', 'api_timeout': 30.0, 'superusers': set(), 'nickname': set(), 'command_start': {'/'}, 'command_sep': {'.'}, 'session_expire_timeout': datetime.timedelta(seconds=120), 'mc_qq': {'chat_image_enable': True, 'server_dict': {'Server': {'group_list': [{'group_id': '9******5', 'adapter': 'onebot', 'bot_id': '1******5'}], 'rcon_msg': False, 'rcon_cmd': True}}}, 'minecraft_server_rcon': {'Server': {'enable_rcon': True, 'rcon_port': 25575, 'rcon_password': 'p*******0'}}}
06-18 22:58:54 [DEBUG] nonebot | Succeeded to load adapter "OneBot V11"
06-18 22:58:54 [DEBUG] nonebot | Succeeded to load adapter "QQ"
06-18 22:58:55 [DEBUG] nonebot | Succeeded to load adapter "Minecraft"
06-18 22:58:55 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_guild_patch"
06-18 22:58:55 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_mcqq"
06-18 22:58:55 [SUCCESS] nonebot | Running NoneBot...
06-18 22:58:56 [DEBUG] nonebot | Loaded adapters: OneBot V11, QQ, Minecraft
06-18 22:58:56 [INFO] uvicorn | Started server process [5152]
06-18 22:58:56 [INFO] uvicorn | Waiting for application startup.
06-18 22:58:56 [DEBUG] nonebot | QQ | QQ run in sandbox mode: False
06-18 22:58:56 [DEBUG] nonebot | QQ | QQ api base url: https://api.sgroup.qq.com/
06-18 22:58:57 [INFO] uvicorn | Application startup complete.
06-18 22:58:57 [INFO] uvicorn | Uvicorn running on http://127.0.0.1:8080 (Press CTRL+C to quit)
06-18 22:58:58 [INFO] uvicorn | ('127.0.0.1', 49906) - "WebSocket /onebot/v11/ws" [accepted]
06-18 22:58:58 [INFO] nonebot | OneBot V11 | Bot 1*******5 connected
06-18 22:58:58 [INFO] websockets | connection open
06-18 22:59:01 [INFO] uvicorn | ('127.0.0.1', 49907) - "WebSocket /minecraft/ws" [accepted]
06-18 22:59:01 [INFO] nonebot | Minecraft | RCON configuration for Bot \u0053\u0065\u0072\u0076\u0065\u0072 not found, will not connect
06-18 22:59:01 [INFO] nonebot | Minecraft | Bot \u0053\u0065\u0072\u0076\u0065\u0072 connected
06-18 22:59:01 [INFO] websockets | connection open
06-18 22:59:01 [WARNING] nonebot_plugin_mcqq | [MC_QQ]丨未找到服务器 \u0053\u0065\u0072\u0076\u0065\u0072 的配置,将无法配置目标群聊
17TheWord commented 1 month ago

你不妨先试试升级Fabric的mod,对于服务器名的编码有过一次改动 2.6.5的编码应该还在用旧版方式,去这里下载构建的工件就行 #25

LeoBlackMT commented 1 month ago

你不妨先试试升级Fabric的mod,对于服务器名的编码有过一次改动 2.6.5的编码应该还在用旧版方式,去这里下载构建的工件就行 #25

问题已解决,功能正常,非常感谢!