[Question] 编辑配置文件并重新启动 mirai console 后配置文件被覆盖
weearc opened this issue · 15 comments
关闭 mirai console 后尝试编辑了生成的配置文件,但编辑后重新启动 mirai console 配置文件被覆盖掉。使用的是Onebot 0.3.4 版本
由于前台调试bot时杀掉bot的进程或者重启进程时会提示找不到websocket监听的端口。因此onebot看起来会尝试覆写掉配置文件。但是这并不是我希望看到的。目前解决方案是用非root用户运行mirai console(因为出现过root身份执行后Java binary被覆盖并被加锁的情况)修改配置文件,修改attr权限,使之无法被删除或覆盖。
sudo chattr +i settings.yml
配置文件的生成和读取都调用的console的api, 交由console进行管理, 当配置中存在bots
项后应该是不会覆盖配置文件的, 请问修改的配置文件是怎样的?
配置文件的生成和读取都调用的console的api, 交由console进行管理, 当配置中存在
bots
项后应该是不会覆盖配置文件的, 请问修改的配置文件是怎样的?
对比 Readme 中的示例配置文件仅仅修改了 heartbeat enable 为true ,并开启了 ws 和 ws reverse 。除此之外只修改了bot的QQ号为对应QQ号码,其他子项保持了默认均为修未在调试bot代码过程中由于 websocket 中断,mirai console 回报无法找到相应 websocket 监听的端口。未对配置文件加锁前会被尝试覆盖。加锁后 mirai console 报错无法对onebot的配置文件进行写入(以非root运行的mirai console)
配置是复制README示例中的内容吗, 如果是, 则确实会被覆盖, 因为示例中并未将配置项写全, 请修改被覆盖后的配置文件试试
而且理论上覆盖不会丢失修改的内容
配置是复制README示例中的内容吗, 如果是, 则确实会被覆盖, 因为示例中并未将配置项写全, 请修改被覆盖后的配置文件试试
而且理论上覆盖不会丢失修改的内容
我这边也遇到了,复现方法:
正常使用中的配置
修改http.enable为false
supervisor重启mirai
重启后http.enable恢复为true
配置文件样式:
proxy: ''
db:
enable: true
# 生存时间/小时,存储的消息会在超过此时间后过期删除,设置为非正数视为无限
ttl: 72
bots:
314****867:
cacheImage: true
cacheRecord: true
heartbeat:
enable: true
interval: 1500
http:
enable: true
host: 0.0.0.0
port: 5700
accessToken: ''
postUrl: ''
postMessageFormat: string
secret: ''
# 上报超时时间, 单位毫秒, 须大于0才会生效
timeout: 0
ws_reverse:
- enable: true
postMessageFormat: string
reverseHost: 127.0.0.1
reversePort: 8002
accessToken: qwerty*******
reversePath: '/ws'
reverseApiPath: '/api'
reverseEventPath: '/event'
useUniversal: true
useTLS: false
reconnectInterval: 3000
ws:
enable: false
postMessageFormat: string
wsHost: 0.0.0.0
wsPort: 6700
accessToken: ''
这个问题有没有解决方法
我也遇到整个文件被覆盖的问题。参考上面提到ws端口的问题后,我试着换了个端口,这次onebot不会覆盖整个配置文件了,但是onebot还是固执地一直在覆盖 reverseApiPath
reverseEventPath
这两个配置项为 /api
和 event
。然而我记得我的nonebot用的是/ws/api
和 /ws/event
两个接口……(ps: 我用的是nonebot 1不是nonebot 2)
ps: windows server 2012
我也遇到整个文件被覆盖的问题。参考上面提到ws端口的问题后,我试着换了个端口,这次onebot不会覆盖整个配置文件了,但是onebot还是固执地一直在覆盖
reverseApiPath
reverseEventPath
这两个配置项为/api
和event
。然而我记得我的nonebot用的是/ws/api
和/ws/event
两个接口……(ps: 我用的是nonebot 1不是nonebot 2)ps: windows server 2012
一般来说使用Universal服务端的话不会用到这两个配置的,被重置也没什么关系
哦对了,配置文件里的这个地址是会拼接的,也就是说,你在reversePath
里输入了/ws
之后,他会自动把你的api地址拼接成/ws/api
,这个你不用担心。
一般来说使用Universal服务端的话不会用到这两个配置的,被重置也没什么关系
哦对了,配置文件里的这个地址是会拼接的,也就是说,你在
reversePath
里输入了/ws
之后,他会自动把你的api地址拼接成/ws/api
,这个你不用担心。
然而并没有,无论是Mirai的命令行界面还是nonebot的命令行界面都显示请求的接口是/api
和/event
,没有ws
。(我的reversePath
确实设置的是/ws
)
还有,我好像不是Universal?(universal指的是什么?)
edit: 我试着把universal改成true,结果不好使。nonebot 1貌似不是universal(我仍然要问universal是什么 :-/)
另,为啥onebot要覆盖配置文件(的部分或全部)?????
edit 2: 不知道为啥现在不复写了,虽然还是不好使(但是现在不是这个issue的问题了)
edit 3: 我**了,别管我接口的问题了
今天同样遇到了,请问这个问题应该怎么解决?
此问题出现的原因可能是在退出时重新保存了一次配置文件
我在使用过程中发现了, 在mirai退出的时候以插件加载时的配置文件覆盖了一次, 这可能是许多人遇到此问题的原因
或许取消这个机制可以避免困惑
此问题出现的原因可能是在退出时重新保存了一次配置文件 我在使用过程中发现了, 在mirai退出的时候以插件加载时的配置文件覆盖了一次, 这可能是许多人遇到此问题的原因 或许取消这个机制可以避免困惑
其实并没有写退出时保存这种功能,所以不太明白是怎么触发的。之前猜测是用错配置类型,在上面已经尝试修复,不过没有发布版本。你使用的是最新的构建版本吗?还是Release中发布的版本呢?