lc-cn / onebots

基于icqq的多例oneBot管理应用
https://docs.onebots.org/
MIT License
171 stars 17 forks source link

发送图文混合内容时图片刷屏且没有发送出去 #44

Closed Misaka-Mikoto-Tech closed 1 year ago

Misaka-Mikoto-Tech commented 1 year ago

我原来是 gocq 反向连接的 nb, 之前是正常使用的,现在换到 onebots,但是在发送图文混合内容时出错,发送代码:

@help.handle()
async def _(event: MessageEvent, bot:Bot):
    bot_id = int(bot.self_id)
    if bot_id in config.bot_names:
        message = f"<font color=green><b>{config.bot_names[bot_id]}目前支持的功能:</b></font>\n(请将UID替换为需要操作的B站UID)\n"
    else:
        message = "<font color=green><b>Bot目前支持的功能:</b></font>\n(请将UID替换为需要操作的B站UID)\n"

    plugin_names:List[str] = []
    for matchers_list in matchers.values():
        for matcher in matchers_list:
            if (
                matcher.plugin_name
                and matcher.plugin_name.startswith("haruka_bot")
                and matcher.__doc__
            ):
                doc = matcher.__doc__
                plugin_names.append(doc)

                func_name = doc[2:]
                open_func = f"开启{func_name}"
                close_func = f"关闭{func_name}"
                if (open_func in plugin_names) and (close_func in plugin_names):
                    plugin_names.remove(open_func)
                    plugin_names.remove(close_func)
                    plugin_names.append(f"开启|关闭{func_name}")

    message += '\n'.join(plugin_names) + "\n"
    message += "点歌\n"
    message += "绘画\n------------------------\n"
    message += "示例:开启动态 123456\n"
    message += "Tips:只发送 \"绘画\" 两个字将显示详细绘画帮助内容\n"

    message = MessageSegment.image(await text_to_img(message, width=425))
    message += f"\n当前版本:v{__version__}\n" "https://github.com/Misaka-Mikoto-Tech"
    await help.finish(message)

其中 text_to_image 的返回类型是 bytes, 我看 onebot 是以 base64:// 格式发出去的

QQ里显示的: 3F}X`Q8AH7FQ8`I1

控制台屏显: 7F2%IKA62S8F19P78_M)BZ8

看现象应该是把base64给打印到屏幕上了

Misaka-Mikoto-Tech commented 1 year ago

已解决,是 icqq-cq-enable 的bug