KimigaiiWuyi / GenshinUID

支持OneBot(QQ)、OneBotV12、QQ频道、微信、KOOK(开黑啦)、Telegram(电报)、FeiShu(飞书)、DoDo、Villa(米游社大别野)、Discord的全功能HoshinoBot/NoneBot2/Koishi/yunzai/ZeroBot原神机器人插件
https://docs.sayu-bot.com
GNU General Public License v3.0
746 stars 101 forks source link

Docker 运行的HoshinoBot升级到4.0的问题,以及多CQ适配的问题 #472

Closed yuuki-nya closed 1 year ago

yuuki-nya commented 1 year ago

折腾了下,发现core需要独立服务运行

我把core作为一个独立的docker容器运行(HoshinoBot的容器我自己用poetry打包的,不好同时运行两个poetry项目),提示找不到运行的gsuid二无限重启;

而另一边的HoshinoBot容器提示无法连接到core也在无限重启(我已经修改了gsuid插件client的ws地址),估计是core无法无限重启连不上,导致这边连不上core自己也在重启;

意思是gsuid和core必须在同一个ip内同时运行?如果考虑core和gsuid分离的话,可否也考虑两者在不同的网段进行ws连接,那样还会更灵活部署。

KimigaiiWuyi commented 1 year ago

你可以修改gsuid core里的config.json,配置host和port

yuuki-nya commented 1 year ago

经过配置core和gsuid后,ws连接成功了,但是提示成功后就卡住了,然后报错重启

[2023-03-26 12:56:24,569 genshinuidv4] INFO: Bot_ID: HoshinoBot连接至[gsuid-core]: ws://gsuid-core:8765/ws/HoshinoBot...
[2023-03-26 12:56:24,579 genshinuidv4] INFO: 与[gsuid-core]成功连接! Bot_ID: HoshinoBot
Traceback (most recent call last):
  File "/root/.cache/pypoetry/virtualenvs/hoshinobot-fEnou5AH-py3.8/lib/python3.8/site-packages/hypercorn/asyncio/lifespan.py", line 76, in wait_for_startup
    await asyncio.wait_for(self.startup.wait(), timeout=self.config.startup_timeout)
  File "/usr/local/lib/python3.8/asyncio/tasks.py", line 501, in wait_for
    raise exceptions.TimeoutError()
asyncio.exceptions.TimeoutError
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "run.py", line 8, in <module>
    bot.run(use_reloader=False, loop=asyncio.get_event_loop())
  File "/root/.cache/pypoetry/virtualenvs/hoshinobot-fEnou5AH-py3.8/lib/python3.8/site-packages/nonebot/__init__.py", line 63, in run
    super().run(host=host, port=port, *args, **kwargs)
  File "/root/.cache/pypoetry/virtualenvs/hoshinobot-fEnou5AH-py3.8/lib/python3.8/site-packages/aiocqhttp/__init__.py", line 222, in run
    self._server_app.run(host=host, port=port, *args, **kwargs)
  File "/root/.cache/pypoetry/virtualenvs/hoshinobot-fEnou5AH-py3.8/lib/python3.8/site-packages/quart/app.py", line 1423, in run
    loop.run_until_complete(asyncio.gather(*tasks))
  File "/usr/local/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
    return future.result()
  File "/root/.cache/pypoetry/virtualenvs/hoshinobot-fEnou5AH-py3.8/lib/python3.8/site-packages/hypercorn/asyncio/__init__.py", line 49, in serve
    await worker_serve(
  File "/root/.cache/pypoetry/virtualenvs/hoshinobot-fEnou5AH-py3.8/lib/python3.8/site-packages/hypercorn/asyncio/run.py", line 77, in worker_serve
    await lifespan.wait_for_startup()
  File "/root/.cache/pypoetry/virtualenvs/hoshinobot-fEnou5AH-py3.8/lib/python3.8/site-packages/hypercorn/asyncio/lifespan.py", line 78, in wait_for_startup
    raise LifespanTimeoutError("startup") from error
hypercorn.utils.LifespanTimeoutError: Timeout whilst awaiting startup. Your application may not support the ASGI Lifespan protocol correctly, alternatively the startup_timeout configuration is incorrect.

core那边的日志

2023-03-26T05:01:39.526763494Z INFO:     ('172.18.0.2', 49928) - "WebSocket /ws/HoshinoBot" [accepted]
2023-03-26T05:01:39.526887353Z INFO:gsuid_core.logger:HoshinoBot已连接!
2023-03-26T05:01:39.527350153Z INFO:     connection open
2023-03-26T05:01:39.527490618Z INFO:gsuid_core.logger:检查遗留信息...
2023-03-26T05:01:39.527629405Z INFO:gsuid_core.logger:检查遗留信息...
2023-03-26T05:02:49.143946703Z WARNING:gsuid_core.logger:HoshinoBot已中断!
2023-03-26T05:02:49.144279518Z INFO:     connection closed
KimigaiiWuyi commented 1 year ago

尝试把__init__.py里面的111行之后都删了看看

@on_startup
async def start_client():
    if gsclient is None:
        await connect()

这一段

yuuki-nya commented 1 year ago

尝试把__init__.py里面的111行之后都删了看看

@on_startup
async def start_client():
    if gsclient is None:
        await connect()

这一段

这样修改后可以连了,但是HoshinoBot的日志一直在刷屏

可能是因为我的HoshinoBot接入了多个GO-CQHTTP的原因,发送“导入V3数据”日志显示 100 错误,gs帮助也无法发送图片

KimigaiiWuyi commented 1 year ago

尝试把__init__.py里面的111行之后都删了看看

@on_startup
async def start_client():
    if gsclient is None:
        await connect()

这一段

这样修改后可以连了,但是HoshinoBot的日志一直在刷屏 [2023-03-26 14:23:38,454 genshinuidv4] INFO: 【发送】[gsuid-core]: onebot

可能是因为我的HoshinoBot接入了多个GO-CQHTTP的原因,发送“导入V3数据”日志显示 100 错误,gs帮助也无法发送图片

【发送】[gsuid-core]: onebot是正常的 无法发送图片 看看core端日志

iona-s commented 1 year ago

我也遇到hoshino跟core连接后就没反应然后过段时间报错的问题。这过程中hoshino自己的定时任务什么的在正常运行但一直连不上go-cq,报错内容跟上面一样。不过删了init.py里的后就都正常了。

yuuki-nya commented 1 year ago

尝试把__init__.py里面的111行之后都删了看看

@on_startup
async def start_client():
    if gsclient is None:
        await connect()

这一段

这样修改后可以连了,但是HoshinoBot的日志一直在刷屏 [2023-03-26 14:23:38,454 genshinuidv4] INFO: 【发送】[gsuid-core]: onebot 可能是因为我的HoshinoBot接入了多个GO-CQHTTP的原因,发送“导入V3数据”日志显示 100 错误,gs帮助也无法发送图片

【发送】[gsuid-core]: onebot是正常的 无法发送图片 看看core端日志

core并没有发现报错

INFO:gsuid_core.logger:[收到消息] MessageReceive(bot_id='onebot', msg_id='', user_type='group', group_id='群号', user_id='Q号', user_pm=1, content=[Message(type='text', data='gs帮助')])
INFO:gsuid_core.logger:↪ 消息 「gs帮助」 触发 「fullmatch」 类型触发器, 关键词: 「gs帮助」 
INFO:gsuid_core.logger:[发送消息to] onebot - group - 群号
KimigaiiWuyi commented 1 year ago

hoshinobot端呢

yuuki-nya commented 1 year ago

hoshinobot端呢

  1. 我现在的情况很诡异,core不能接受群的消息了,刚刚还都是正常的,我重启core和hoshino也无解,情况就是core接收了两三天条信息就停了
  2. 如果我没记错,刚刚还算正常的时候,发送 gs 帮助,hoshinobot那边是没有报错的,只是提示接受了这个命令
  3. 可否考虑给hoshino的gsuid改为适配多cq接入,由于多cq接入,我之前的推送功能也是坏的,可以参考这段代码
    for sid in hoshino.get_self_ids():
    try:
        await bot.send_group_msg(
            self_id = sid,
            group_id = int(info['gid']),
            message = "内容"
        )
KimigaiiWuyi commented 1 year ago

hoshinobot端呢

  1. 我现在的情况很诡异,core不能接受群的消息了,刚刚还都是正常的,我重启core和hoshino也无解,情况就是core接收了两三天条信息就停了
  2. 如果我没记错,刚刚还算正常的时候,发送 gs 帮助,hoshinobot那边是没有报错的,只是提示接受了这个命令
  3. 可否考虑给hoshino的gsuid改为适配多cq接入,由于多cq接入,我之前的推送功能也是坏的,可以参考这段代码
for sid in hoshino.get_self_ids():
    try:
        await bot.send_group_msg(
            self_id = sid,
            group_id = int(info['gid']),
            message = "内容"
        )

试试使用连接core命令看看能不能连上去 有关多cq的问题,确实是疏忽了,等晚点我需要整体添加一个参数

yuuki-nya commented 1 year ago

hoshinobot端呢

  1. 我现在的情况很诡异,core不能接受群的消息了,刚刚还都是正常的,我重启core和hoshino也无解,情况就是core接收了两三天条信息就停了
  2. 如果我没记错,刚刚还算正常的时候,发送 gs 帮助,hoshinobot那边是没有报错的,只是提示接受了这个命令
  3. 可否考虑给hoshino的gsuid改为适配多cq接入,由于多cq接入,我之前的推送功能也是坏的,可以参考这段代码
for sid in hoshino.get_self_ids():
    try:
        await bot.send_group_msg(
            self_id = sid,
            group_id = int(info['gid']),
            message = "内容"
        )

试试使用连接core命令看看能不能连上去 有关多cq的问题,确实是疏忽了,等晚点我需要整体添加一个参数

好了,我之前的说法有误,实际上hoshinobot还是报错了,原因应该还是和多cq有关系

[2023-03-26 18:04:55,532 genshinuidv4] INFO: 【接收】[gsuid-core]: HoshinoBot - None - None
[2023-03-26 18:04:55,532 genshinuidv4] INFO: 获得gs帮助图片成功!
[2023-03-26 18:04:55,690 genshinuidv4] INFO: 【接收】[gsuid-core]: onebot - group - *群号*
[2023-03-26 18:04:55,795 genshinuidv4] ERROR: <ActionFailed data=None, echo={'seq': 5}, message='群聊不存在', msg='GROUP_NOT_FOUND', retcode=100, status='failed', wording='群聊不存在'>

另外之前的不正常,是因为我没有把core容易的 /gsuid-core 映射到 hoshinobot容器内的 /gsuid-core,为此,我想提两点建议:

  1. core和bot的插件能否独立运行,不依赖文件间的关系,只靠ws连接
  2. 文件发送可否改为http模式,因为core都已经内建了web server,实现起来应该不难,这样的好处就是日后可以nb2 hoshinobot都接入这个core,而且不用额外映射路径,做到相对独立。
KimigaiiWuyi commented 1 year ago

hoshinobot端呢

  1. 我现在的情况很诡异,core不能接受群的消息了,刚刚还都是正常的,我重启core和hoshino也无解,情况就是core接收了两三天条信息就停了
  2. 如果我没记错,刚刚还算正常的时候,发送 gs 帮助,hoshinobot那边是没有报错的,只是提示接受了这个命令
  3. 可否考虑给hoshino的gsuid改为适配多cq接入,由于多cq接入,我之前的推送功能也是坏的,可以参考这段代码
for sid in hoshino.get_self_ids():
    try:
        await bot.send_group_msg(
            self_id = sid,
            group_id = int(info['gid']),
            message = "内容"
        )

试试使用连接core命令看看能不能连上去 有关多cq的问题,确实是疏忽了,等晚点我需要整体添加一个参数

好了,我之前的说法有误,实际上hoshinobot还是报错了,原因应该还是和多cq有关系

[2023-03-26 18:04:55,532 genshinuidv4] INFO: 【接收】[gsuid-core]: HoshinoBot - None - None
[2023-03-26 18:04:55,532 genshinuidv4] INFO: 获得gs帮助图片成功!
[2023-03-26 18:04:55,690 genshinuidv4] INFO: 【接收】[gsuid-core]: onebot - group - *群号*
[2023-03-26 18:04:55,795 genshinuidv4] ERROR: <ActionFailed data=None, echo={'seq': 5}, message='群聊不存在', msg='GROUP_NOT_FOUND', retcode=100, status='failed', wording='群聊不存在'>

另外之前的不正常,是因为我没有把core容易的 /gsuid-core 映射到 hoshinobot容器内的 /gsuid-core,为此,我想提两点建议:

  1. core和bot的插件能否独立运行,不依赖文件间的关系,只靠ws连接
  2. 文件发送可否改为http模式,因为core都已经内建了web server,实现起来应该不难,这样的好处就是日后可以nb2 hoshinobot都接入这个core,而且不用额外映射路径,做到相对独立。

1.core目前和hoshinobot的插件 确实是独立运行的,使用poetry run python core.py启动core 2.文件收发目前用的b64,core本来就是独立运行的,确实都可以接入吧

另外有关多CQ接入,我测试了一下,找到了原因,稍后修复

KimigaiiWuyi commented 1 year ago

hoshinobot端呢

  1. 我现在的情况很诡异,core不能接受群的消息了,刚刚还都是正常的,我重启core和hoshino也无解,情况就是core接收了两三天条信息就停了
  2. 如果我没记错,刚刚还算正常的时候,发送 gs 帮助,hoshinobot那边是没有报错的,只是提示接受了这个命令
  3. 可否考虑给hoshino的gsuid改为适配多cq接入,由于多cq接入,我之前的推送功能也是坏的,可以参考这段代码
for sid in hoshino.get_self_ids():
    try:
        await bot.send_group_msg(
            self_id = sid,
            group_id = int(info['gid']),
            message = "内容"
        )

试试使用连接core命令看看能不能连上去 有关多cq的问题,确实是疏忽了,等晚点我需要整体添加一个参数

好了,我之前的说法有误,实际上hoshinobot还是报错了,原因应该还是和多cq有关系

[2023-03-26 18:04:55,532 genshinuidv4] INFO: 【接收】[gsuid-core]: HoshinoBot - None - None
[2023-03-26 18:04:55,532 genshinuidv4] INFO: 获得gs帮助图片成功!
[2023-03-26 18:04:55,690 genshinuidv4] INFO: 【接收】[gsuid-core]: onebot - group - *群号*
[2023-03-26 18:04:55,795 genshinuidv4] ERROR: <ActionFailed data=None, echo={'seq': 5}, message='群聊不存在', msg='GROUP_NOT_FOUND', retcode=100, status='failed', wording='群聊不存在'>

另外之前的不正常,是因为我没有把core容易的 /gsuid-core 映射到 hoshinobot容器内的 /gsuid-core,为此,我想提两点建议:

  1. core和bot的插件能否独立运行,不依赖文件间的关系,只靠ws连接
  2. 文件发送可否改为http模式,因为core都已经内建了web server,实现起来应该不难,这样的好处就是日后可以nb2 hoshinobot都接入这个core,而且不用额外映射路径,做到相对独立。

看了一下HoshinoBot的源码,似乎没有get_bots方法能拿到连接的实例,虽然可以通过bot.send_group_msg之类的方法传入self_id控制收发消息,但是如果要用到call_action传送文件,则会把action都发往两个连接的gocq,没办法单独控制一个的样子

yuuki-nya commented 1 year ago

call_action

是的,这都nonebot1的限制,所以近期我想转去nb2,顺便问下nb2版本的gsuid有没有对多cq接入优化过?

KimigaiiWuyi commented 1 year ago

call_action

是的,这都nonebot1的限制,所以近期我想转去nb2,顺便问下nb2版本的gsuid有没有对多cq接入优化过?

就在刚刚都优化了、hoshino现在应该也可以正常连接多cq、不过涉及call_action可能会有问题

yuuki-nya commented 1 year ago

更新一下,运行了一天,core那边遇到需要主动推送的事件就会出错,应该是前面提到的call_action

WARNING:rollbar:Got unexpected status code from Rollbar api: 401

:
b'{\n  "err": 1,\n  "message": "invalid access token"\n}'
ERROR:rollbar.lib._async:Exception while posting item ApiError('invalid access token')
Traceback (most recent call last):
  File "/root/.cache/pypoetry/virtualenvs/gsuid-core-9TtSrW0h-py3.8/lib/python3.8/site-packages/rollbar/lib/_async.py", line 147, in _post_api_httpx
    return rollbar._parse_response(path, access_token, payload_str, resp)
  File "/root/.cache/pypoetry/virtualenvs/gsuid-core-9TtSrW0h-py3.8/lib/python3.8/site-packages/rollbar/__init__.py", line 1733, in _parse_response
    raise ApiError(json_data.get('message') or 'Unknown error')
rollbar.ApiError: invalid access token
ERROR:gsuid_core.logger:[推送提醒]获取*群号*的数据失败!

这个本来可以接受,因为之前就没办法用推送,但是不知道什么原因,今天下午HoshinoBot就无法使用gsuid了,core那边的日志也没了群消息log,发送 启动core提示成功但无效。

KimigaiiWuyi commented 1 year ago

更新一下,运行了一天,core那边遇到需要主动推送的事件就会出错,应该是前面提到的call_action

WARNING:rollbar:Got unexpected status code from Rollbar api: 401
�
:
b'{\n  "err": 1,\n  "message": "invalid access token"\n}'
ERROR:rollbar.lib._async:Exception while posting item ApiError('invalid access token')
Traceback (most recent call last):
  File "/root/.cache/pypoetry/virtualenvs/gsuid-core-9TtSrW0h-py3.8/lib/python3.8/site-packages/rollbar/lib/_async.py", line 147, in _post_api_httpx
    return rollbar._parse_response(path, access_token, payload_str, resp)
  File "/root/.cache/pypoetry/virtualenvs/gsuid-core-9TtSrW0h-py3.8/lib/python3.8/site-packages/rollbar/__init__.py", line 1733, in _parse_response
    raise ApiError(json_data.get('message') or 'Unknown error')
rollbar.ApiError: invalid access token
ERROR:gsuid_core.logger:[推送提醒]获取*群号*的数据失败!

这个本来可以接受,因为之前就没办法用推送,但是不知道什么原因,今天下午HoshinoBot就无法使用gsuid了,core那边的日志也没了群消息log,发送 启动core提示成功但无效。

主动推送错误的话,报错应该不止这一点,上面应该还有? 启动core是在bot子进程内启动、很可能遇上链接复用,没有启动成功,因为之前的没关 你是在docker里分开部署的吧,用连接core的情况如何呢

yuuki-nya commented 1 year ago

更新一下,运行了一天,core那边遇到需要主动推送的事件就会出错,应该是前面提到的call_action

WARNING:rollbar:Got unexpected status code from Rollbar api: 401
�
:
b'{\n  "err": 1,\n  "message": "invalid access token"\n}'
ERROR:rollbar.lib._async:Exception while posting item ApiError('invalid access token')
Traceback (most recent call last):
  File "/root/.cache/pypoetry/virtualenvs/gsuid-core-9TtSrW0h-py3.8/lib/python3.8/site-packages/rollbar/lib/_async.py", line 147, in _post_api_httpx
    return rollbar._parse_response(path, access_token, payload_str, resp)
  File "/root/.cache/pypoetry/virtualenvs/gsuid-core-9TtSrW0h-py3.8/lib/python3.8/site-packages/rollbar/__init__.py", line 1733, in _parse_response
    raise ApiError(json_data.get('message') or 'Unknown error')
rollbar.ApiError: invalid access token
ERROR:gsuid_core.logger:[推送提醒]获取*群号*的数据失败!

这个本来可以接受,因为之前就没办法用推送,但是不知道什么原因,今天下午HoshinoBot就无法使用gsuid了,core那边的日志也没了群消息log,发送 启动core提示成功但无效。

主动推送错误的话,报错应该不止这一点,上面应该还有? 启动core是在bot子进程内启动、很可能遇上链接复用,没有启动成功,因为之前的没关 你是在docker里分开部署的吧,用连接core的情况如何呢

忘记是 连接core 了,我刚刚整个HoshinoBot重启好了,下次卡了试试这个命令。

KimigaiiWuyi commented 1 year ago

更新一下,运行了一天,core那边遇到需要主动推送的事件就会出错,应该是前面提到的call_action

WARNING:rollbar:Got unexpected status code from Rollbar api: 401
�
:
b'{\n  "err": 1,\n  "message": "invalid access token"\n}'
ERROR:rollbar.lib._async:Exception while posting item ApiError('invalid access token')
Traceback (most recent call last):
  File "/root/.cache/pypoetry/virtualenvs/gsuid-core-9TtSrW0h-py3.8/lib/python3.8/site-packages/rollbar/lib/_async.py", line 147, in _post_api_httpx
    return rollbar._parse_response(path, access_token, payload_str, resp)
  File "/root/.cache/pypoetry/virtualenvs/gsuid-core-9TtSrW0h-py3.8/lib/python3.8/site-packages/rollbar/__init__.py", line 1733, in _parse_response
    raise ApiError(json_data.get('message') or 'Unknown error')
rollbar.ApiError: invalid access token
ERROR:gsuid_core.logger:[推送提醒]获取*群号*的数据失败!

这个本来可以接受,因为之前就没办法用推送,但是不知道什么原因,今天下午HoshinoBot就无法使用gsuid了,core那边的日志也没了群消息log,发送 启动core提示成功但无效。

主动推送错误的话,报错应该不止这一点,上面应该还有? 启动core是在bot子进程内启动、很可能遇上链接复用,没有启动成功,因为之前的没关 你是在docker里分开部署的吧,用连接core的情况如何呢

忘记是 连接core 了,我刚刚整个HoshinoBot重启好了,下次卡了试试这个命令。

如果有遇到主动推送报错的情况,把log贴上来,虽然hoshino callaction有问题,但实测会触发成功,不会报错,只是说,只会call第一个go-cq的action

yuuki-nya commented 1 year ago

今天尝试更新后的 扫码登录,私聊bot后core日志

INFO:gsuid_core.logger: 消息 「扫码登录」 触发 「fullmatch」 类型触发器, 关键词: 「扫码登录」 
INFO:gsuid_core.logger:[发送消息to] onebot - direct - 我的qq

hoshino日志

[2023-03-28 08:41:23,387 genshinuidv4] ERROR: <ActionFailed data=None, echo={'seq': 155}, message='请参考 go-cqhttp 端输出', msg='SEND_MSG_API_ERROR', retcode=100, status='failed', wording='请参考 go-cqhttp 端输出'>

一看就是多cq造成的问题了

game_token获取失败:二维码已过期

core的日志也显示

{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'data': None, 'message': 'ExpiredCode', 'retcode': -106}
{'retcode': 0, 'message': 'OK', 'data': {'url': 'https://user.mihoyo.com/qr_code_in_game.html?app_id=8&app_name=%E5%B4%A9%E5%9D%8F%3A%E6%98%9F%E7%A9%B9%E9%93%81%E9%81%93&bbs=true&biz_key=hkrpg_cn&expire=1680395697&ticket=642236315c78720635820517'}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
WARNING:gsuid_core.logger:二维码已过期
WARNING:gsuid_core.logger:game_token获取失败
INFO:gsuid_core.logger:[发送消息to] onebot - direct - 我的qq
KimigaiiWuyi commented 1 year ago

今天尝试更新后的 扫码登录,私聊bot后core日志

INFO:gsuid_core.logger: 消息 「扫码登录」 触发 「fullmatch」 类型触发器, 关键词: 「扫码登录」 
INFO:gsuid_core.logger:[发送消息to] onebot - direct - 我的qq

hoshino日志

[2023-03-28 08:41:23,387 genshinuidv4] ERROR: <ActionFailed data=None, echo={'seq': 155}, message='请参考 go-cqhttp 端输出', msg='SEND_MSG_API_ERROR', retcode=100, status='failed', wording='请参考 go-cqhttp 端输出'>

一看就是多cq造成的问题了

game_token获取失败:二维码已过期

core的日志也显示

{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'data': None, 'message': 'ExpiredCode', 'retcode': -106}
{'retcode': 0, 'message': 'OK', 'data': {'url': 'https://user.mihoyo.com/qr_code_in_game.html?app_id=8&app_name=%E5%B4%A9%E5%9D%8F%3A%E6%98%9F%E7%A9%B9%E9%93%81%E9%81%93&bbs=true&biz_key=hkrpg_cn&expire=1680395697&ticket=642236315c78720635820517'}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
{'retcode': 0, 'message': 'OK', 'data': {'stat': 'Init', 'payload': {'proto': 'Raw', 'raw': '', 'ext': ''}}}
WARNING:gsuid_core.logger:二维码已过期
WARNING:gsuid_core.logger:game_token获取失败
INFO:gsuid_core.logger:[发送消息to] onebot - direct - 我的qq

这个没什么好办法...扫码登陆会调用call_api,而hoshino那边call_api的话会调用第一个连接go-cq的,你可能给第二个连接的发的,然后第一个连接的qq号尝试发送,但失败

yuuki-nya commented 1 year ago

这个没什么好办法...扫码登陆会调用call_api,而hoshino那边call_api的话会调用第一个连接go-cq的,你可能给第二个连接的发的,然后第一个连接的qq号尝试发送,但失败

能不能来个蠢办法,在hoshini这边遍历所有bot,然后for循环+try给每个bot发这个命令

KimigaiiWuyi commented 1 year ago

这个没什么好办法...扫码登陆会调用call_api,而hoshino那边call_api的话会调用第一个连接go-cq的,你可能给第二个连接的发的,然后第一个连接的qq号尝试发送,但失败

能不能来个蠢办法,在hoshini这边遍历所有bot,然后for循环+try给每个bot发这个命令

hoshino拿不到单独bot的实例、只能拿到一个bot

yuuki-nya commented 1 year ago

试试这个

for sid in hoshino.get_self_ids():
    try:
        await bot.send_group_msg(
            self_id = sid,
            group_id = int(info['gid']),
            message = "内容"
        )

私聊也一样,改下就行,我试过多cq这种遍历方式是可行的

KimigaiiWuyi commented 1 year ago

试试这个

for sid in hoshino.get_self_ids():
    try:
        await bot.send_group_msg(
            self_id = sid,
            group_id = int(info['gid']),
            message = "内容"
        )

私聊也一样,改下就行,我试过多cq这种遍历方式是可行的

发消息没问题,但是不能用call_api 因为扫码登陆发送的是合并转发,合并转发需要用到call_api而不是单纯的send_group_msg,其他发消息是没问题的

yuuki-nya commented 1 year ago

试试这个

for sid in hoshino.get_self_ids():
    try:
        await bot.send_group_msg(
            self_id = sid,
            group_id = int(info['gid']),
            message = "内容"
        )

私聊也一样,改下就行,我试过多cq这种遍历方式是可行的

发消息没问题,但是不能用call_api 因为扫码登陆发送的是合并转发,合并转发需要用到call_api而不是单纯的send_group_msg,其他发消息是没问题的

明白了,该考虑nb2了😂

WindStill commented 1 year ago

老哥,你打包好的docker镜像core方便提供一下吗?

yuuki-nya commented 1 year ago

老哥,你打包好的docker镜像core方便提供一下吗?

core已新增docker部署脚本

https://github.com/Genshin-bots/gsuid_core

WindStill commented 1 year ago

老哥,你打包好的docker镜像core方便提供一下吗?

core已新增docker部署脚本

https://github.com/Genshin-bots/gsuid_core

谢谢