Skip to content
This repository has been archived by the owner on Aug 12, 2024. It is now read-only.

Bug:使用被动WebSocket时,调用频道相关接口没有回复 #223

Closed
MoRanYue opened this issue Feb 5, 2024 · 9 comments
Closed
Labels
bug Something isn't working

Comments

@MoRanYue
Copy link

MoRanYue commented Feb 5, 2024

警告: 在进一步操作之前,请检查下列选项。如果您忽视此模板或者没有提供关键信息,您的 Issue 将直接被关闭

  • 确保您使用的是 最新开发版本 的 Shamrock.
  • 确保您的问题尚未在 Issues 列表中提出.
  • 确保您的问题不是由于您的代码错误导致的.

描述 Bug

使用被动WebSocket时,调用频道相关接口没有回复。

OpenShamrock日志:

[16:47:09] INFO 群消息 (group = BotTest (xxx), uin = 2627706725, id = xxx, seq = 3458, msg = 621267883988015100)
[16:47:12] DEBUG ReceivePacket (cmd = trpc.msg.olpush.OlPushService.MsgPush)
[16:47:12] INFO 群消息 (group = BotTest (xxx), uin = 2627706725, id = xxx, seq = 3459, msg = .testapi get_guild_channel_list {"guild_id": 621267883988015100, "refresh": true})
[16:47:12] DEBUG ReceivePacket [818144588](cmd = OidbSvc.0x480_9_IMCore, seq = 89326)
[16:47:13] DEBUG ReceivePacket [290112411](cmd = TianShu.UserActionMultiReport, seq = 89327)
[16:47:19] DEBUG WebSocketClient 心跳: xxx
[16:47:34] DEBUG WebSocketClient 心跳: xxx

Bot后端日志:

[2024年02月05日 16:47:14.050][调试] [反向 WebSocket @ 0.0.0.0:3007] 接收到“192.168.40.88:40504”的事件上报
[2024年02月05日 16:47:14.050][调试] [反向 WebSocket @ 0.0.0.0:3007] 类型:消息(Message)
[2024年02月05日 16:47:14.050][调试] [反向 WebSocket @ 0.0.0.0:3007] {"time":1707122832,"self_id":xxx,"post_type":"message","message_type":"group","sub_type":"normal","message_id":2048459502,"group_id":xxx,"peer_id":xxx,"user_id":2627706725,"message":[{"data":{"text":".testapi get_guild_channel_list {\"guild_id\": 621267883988015100, \"refresh\": true}"},"type":"text"}],"raw_message":".testapi get_guild_channel_list {\"guild_id\": 621267883988015100, \"refresh\": true}","font":0,"sender":{"user_id":2627706725,"nickname":"owner","card":"owner","role":"owner","title":"","level":""}}
[2024年02月05日 16:47:14.050][信息] [内置插件] 接收到消息:.testapi get_guild_channel_list {"guild_id": 621267883988015100, "refresh": true}(2048459502) 来自群聊:BotTest(xxx) 发送者:xxx
[2024年02月05日 16:47:14.050][信息] [内置插件] 接收到命令:.testapi get_guild_channel_list {"guild_id": 621267883988015100, "refresh": true}(2048459502) 来自群聊:BotTest(xxx) 发送者:xxx
[2024年02月05日 16:47:14.050][调试] [调试器] 正在调用接口:get_guild_channel_list
[2024年02月05日 16:47:14.050][调试] [调试器] 数据:{"guild_id": 621267883988015100, "refresh": true}
[2024年02月05日 16:47:24.058][错误] 错误:动作请求失败: 动作:get_guild_channel_list 原因:动作超时
调用堆栈:
Error: 动作请求失败: 动作:get_guild_channel_list 原因:动作超时
    at Timeout._onTimeout (H:\HTMLCODE\MomoonBot\dist\src\connections\ReverseWsClient.js:61:27)
    at listOnTimeout (node:internal/timers:573:17)
    at process.processTimers (node:internal/timers:514:7)

复现 Bug

向OpenShamrock通过被动WebSocket,调用诸如get_guild_channel_list get_guild_roles get_guild_member_list等动作。

系统信息

  • Shamrock 版本: fb00e5c提交
  • Android 版本: 14
  • LSPosed 框架版本: 1.9.2(7024)
  • 设备的制造商和型号: Xiaomi 11 Lite(renior)
  • 设备的 CPU 架构: Arm64
@MoRanYue MoRanYue added the bug Something isn't working label Feb 5, 2024
whitechi73 added a commit that referenced this issue Feb 5, 2024
@whitechi73
Copy link
Owner

请求示例

{
  "action": "get_guild_channel_list",
  "params": {
    "guild_id": 652778324010301988,
    "refresh": true
  },
  "echo": 111
}

无法复现!

@whitechi73
Copy link
Owner

请提供QQ版本,或者查看错误日志

@MoRanYue
Copy link
Author

MoRanYue commented Feb 5, 2024

这里正在使用8.9.83版本呀

@whitechi73
Copy link
Owner

该API是在QQ 9.0.15 测试实现,低版本不知道。

@MoRanYue
Copy link
Author

MoRanYue commented Feb 5, 2024

该API是在QQ 9.0.15 测试实现,低版本不知道。

(这个版本,亦支持频道功能呀
emm,考虑到大版本的架构更改,应该,会有一些不同)

emmmm,OpenShamrock,即使在调试模式下,亦没有任何异常抛出呀

而且,这里可以使用get_guild_list接口呀

@whitechi73
Copy link
Owner

该API是在QQ 9.0.15 测试实现,低版本不知道。

(这个版本,亦支持频道功能呀 emm,考虑到大版本的架构更改,应该,会有一些不同)

emmmm,OpenShamrock,即使在调试模式下,亦没有任何异常抛出呀

而且,这里可以使用get_guild_list接口呀

可能API不一样?Guild功能现在还在重做,腾讯还在摇摆。

@whitechi73
Copy link
Owner

    fun getGuildList(refresh: Boolean = false, forceOldApi: Boolean): ArrayList<GuildInfo> {
        val kernelGProService = NTServiceFetcher.kernelService.wrapperSession.guildService
        if (refresh) {
            kernelGProService.refreshGuildList(true)
            kernelGProService.guildListFromCache.forEach {
                refreshGuildInfo(it.guildId.toULong())
            }
        }
        val result = arrayListOf<GuildInfo>()
        if (PlatformUtils.getQQVersionCode() < PlatformUtils.QQ_9_0_8_VER || forceOldApi) {
            getGuildListByOldApi(result)
        } else {
            runCatching {
                getGuildListByNt(result)
            }.onFailure {
                LogCenter.log("GetGuildListByNt failed: ${it.stackTraceToString()}", Level.ERROR)
                getGuildListByOldApi(result) // 防止QQ更新API导致无法获取
            }
        }

        return result
    }

获取频道列表有一个容错代码。

@MoRanYue
Copy link
Author

MoRanYue commented Feb 5, 2024

该API是在QQ 9.0.15 测试实现,低版本不知道。

(这个版本,亦支持频道功能呀 emm,考虑到大版本的架构更改,应该,会有一些不同)

emmmm,OpenShamrock,即使在调试模式下,亦没有任何异常抛出呀

而且,这里可以使用get_guild_list接口呀

可能API不一样?Guild功能现在还在重做,腾讯还在摇摆。

那……
好吧,若频道功能还在重制,还是等到稳定版,再来解决此提议吧。

@whitechi73
Copy link
Owner

get_guild_member_list: fixed

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants