Giter Club home page Giter Club logo

nonebot-plugin-bilichat's Introduction

NoneBotPluginLogo

NoneBotPluginText

nonebot-plugin-bilichat

✨ 多功能的 B 站视频解析工具 ✨

license PyPI - Downloads pypi python pdm-managed Code style: black QQ Chat Group QQ Chat Group

📖 介绍

视频链接解析,并根据其内容生成基本信息词云内容总结

手机端视图

基本信息

bbot_default

style_blue

词云

视频总结

💿 安装

Linux 用户在安装时如果出现 libGL.so.1: cannot open shared object file: No such file or directory 错误,说明缺少 OpenGL 的运行环境,可以参考 dynamicrender 中的 README 安装对应的依赖后重试

使用 nb-cli 安装 在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装
nb plugin install nonebot-plugin-bilichat

注: 由于 nb-cli 不支持依赖组,因此需要启用词云和 AI 总结的用户要通过其他的包管理器安装额外的依赖

pip install nonebot-plugin-bilichat[all]
使用包管理器安装 在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令
pip
pip install nonebot-plugin-bilichat[all]
pdm
pdm add nonebot-plugin-bilichat[all]
poetry
poetry add nonebot-plugin-bilichat[all]
conda
conda install nonebot-plugin-bilichat[all]

打开 nonebot2 项目根目录下的 pyproject.toml 文件, 在 [tool.nonebot] 部分追加写入

plugins = ["nonebot_plugin_bilichat"]

⚙️ 配置

在 nonebot2 项目的.env文件中添加下表中的配置, 配置均为非必须项

太长不看版

一般来说,你只需要关注以下几个配置项

# 对同一视频的响应冷却时间(防止刷屏)
bilichat_cd_time = 120
# 网络请求重试次数
bilichat_neterror_retry = 3
# 是否使用浏览器截图(需要额外依赖)
bilichat_use_browser = True

# 是否开启词云(需要额外依赖)
bilichat_word_cloud = True

# === AI 总结相关 ===
# 官方总结接口
bilichat_official_summary = True
# openai 接口(需要额外依赖)
bilichat_openai_token = sk-xxxxxxx
# 网络代理
bilichat_openai_proxy = "http://127.0.0.1:7890/"

通用配置项

配置项 类型 默认值 说明
bilichat_block bool False 是否拦截事件(防止其他插件二次解析)
bilichat_enable_self bool False 是否允许响应自身的消息
bilichat_only_self bool False 是否仅响应自身的消息,开启后会覆盖全部其他规则(人机合一特供)
bilichat_only_to_me bool False 非自身消息是否需要 @机器人 或使用机器人的昵称才响应
bilichat_whitelist list[str] [] 响应的会话名单, 会覆盖黑名单
bilichat_blacklist list[str] [] 不响应的会话名单
bilichat_dynamic_font str None 视频信息及词云图片使用的字体
bilichat_cd_time int 120 对同一视频的响应冷却时间(防止刷屏)
bilichat_neterror_retry int 3 对部分网络请求错误的尝试次数
bilichat_use_bcut_asr bool True 是否在没有字幕时调用必剪接口生成字幕
bilichat_show_error_msg bool True 是否在解析失败时发送错误信息
bilichat_use_browser bool Auto 是否使用浏览器,Auto 会根据是否含有相应的依赖进行选择
bilichat_browser_shot_quality int 75 浏览器截图质量,取值范围 10-100,越高则截图的体积越大
bilichat_cache_serive str Auto 使用的缓存类型,可用类型包含 jsonmongodb
bilichat_text_fonts str default 可供自定义的字体,仅作用于 dynamicrender 绘图
bilichat_emoji_fonts str default 可供自定义的字体,仅作用于 dynamicrender 绘图
bilichat_webui_path str bilichat WebUI 的路径,设置为空则不开启 WebUI

注:

  1. 由于 OneBot 协议未规定是否应上报自身事件,因此在不同的场景下能否获取自身事件并不一定,bilichat_enable_self 实际能否生效也与之相关
  2. bilichat_whitelist 存在时,bilichat_blacklist 将会被禁用
  3. bilichat_dynamic_font 可填写自定义的字体 url,但并不推荐修改
  4. 当使用 bcut_asr 接口来生成 AI 字幕时,根据视频时长和网络情况有可能会识别失败,Bot 会提示 BCut-ASR conversion failed due to network error。可以通过调高 bilichat_neterror_retry 次数或几分钟后重试来尝试重新生成字幕
  5. bilichat_cache_serivemongodb 时,需要安装并配置 nonebot-plugin-mongodb 才可正常使用

指令配置项

配置项 类型 默认值 说明
bilichat_command_to_me bool True 命令是否需要@机器人
bilichat_cmd_start str "bilichat" 命令的起始词,可设置为空
bilichat_cmd_add_sub list[str] ["订阅", "关注"] "sub"命令的别名
bilichat_cmd_remove_sub list[str] ["退订", "取关"] "unsub"命令的别名
bilichat_cmd_check_sub list[str] ["查看", "查看订阅"] "check"命令的别名
bilichat_cmd_reset_sub list[str] ["重置", "重置配置"] "reset"命令的别名
bilichat_cmd_at_all list[str] ["全体成员", "at 全体"] "atall"命令的别名
bilichat_cmd_dynamic list[str] ["动态通知", "动态订阅"] "dynamic"命令的别名
bilichat_cmd_live list[str] ["直播通知", "直播订阅"] "live"命令的别名
bilichat_cmd_checkdynamic list[str] ["查看动态"] "checkdynamic" 命令的别名
bilichat_cmd_fetch list[str] ["获取内容", "解析内容"] "fetch" 命令的别名
bilichat_cmd_check_login list[str] ["查看登录账号"] "checklogin" 命令的别名
bilichat_cmd_login_qrcode list[str] ["扫码登录"] "qrlogin" 命令的别名
bilichat_cmd_logout list[str] ["登出账号"] "logout" 命令的别名

基础信息配置项

配置项 类型 默认值 说明
bilichat_basic_info bool True 是否开启视频基本信息
bilichat_basic_info_style str Auto 视频详情的图片样式,可用样式见下方备注
bilichat_basic_info_url bool True 开启视频进本信息的情况下,是否一同回复一个链接
bilichat_reply_to_basic_info bool True 后续消息是否回复基础信息(关闭则回复发送者的信息)
bilichat_dynamic bool True 是否开启动态解析
bilichat_dynamic_style str Auto 动态详情的图片样式,可用样式见下方备注
bilichat_bilibili_cookie str None bilibili 的 cookie 文件路径,api 则自动创建空文件

bilichat_basic_info_style 除默认的 bbot_default 使用 PIL 绘图(未开启浏览器时默认选择),其他均依赖于浏览器进行渲染(需要设置 bilichat_use_browser 为 True 或 Auto),其可用的样式如下所示

bbot_default (无浏览器时默认)

style_blue (有浏览器时默认)

bilichat_dynamic_style 除默认的 dynamicrender 使用 Skia 绘图(未开启浏览器时默认选择),其他均依赖于浏览器进行渲染(需要设置 bilichat_use_browser 为 True 或 Auto),其可用的样式如下所示

dynamicrender (无浏览器时默认)

browser_mobile (有浏览器时默认)

browser_pc

词云配置项

开启此功能需要安装对应的依赖 nonebot-plugin-bilichat[wordcloud]

配置项 类型 默认值 说明
bilichat_word_cloud bool False 是否开启词云功能
bilichat_word_cloud_size list[int] [1000, 800] 词云图片尺寸

AI 视频总结配置项

开启此功能需要安装对应的依赖 nonebot-plugin-bilichat[summary]

配置项 类型 默认值 说明
bilichat_summary_ignore_null bool True 是否忽略无意义的总结内容
bilichat_official_summary bool False 是否开启官方总结,此总结独立于下方 AI 总结,可与下方 AI 总结同时生效
bilichat_openai_token str None openai 的 apikey, 若留空则禁用 openai 总结
bilichat_openai_proxy str None 访问 openai 或 newbing 使用的代理地址
bilichat_openai_model str gpt-3.5-turbo-0301 使用的语言模型名称
bilichat_openai_token_limit int 3500 请求的文本量上限, 计算方式可参考tiktoken
bilichat_openai_api_base str see description 默认为 https://api.openai.com,可自行替换

注:

  1. openai 需求科学上网才能使用,国内服务器请务必填写 bilichat_openai_proxy 或全局透明代理
  2. 由于 newbing 接口限制以及能力下降,现已移除支持
  3. 官方总结目前为内测状态,之后接口随时可能会有变化,请注意及时更新

🎉 使用

直接发送视频(专栏)链接即可

参数表

在发送视频时,可以额外添加以下类似 shell 指令的参数,进而对解析流程进行调整。例如

BV12v4y1E7NT --refresh
BV12v4y1E7NT -r # 可以使用简写
BV12v4y1E7NT -r --no-cache # 可以多个参数混用
BV12v4y1E7NT -rn # 可以将简写合并,效果同上一条
-r BV12v4y1E7NT -n # 虽然不建议,但确实可以把参数放前面
指令 简写 说明
--no-cache -n 本次总结禁用缓存(不会影响已存在的缓存文件)
--refresh -r 刷新此视频的词云和总结缓存(会覆盖已存在的缓存文件)
--force -f 忽略 cd 时间,强制解析视频

指令表

指令部分由 指令前缀指令名 组成,其中 指令前缀 包含 COMMAND_START bilichat_cmd_start COMMAND_SEP 三部分,默认的 指令前缀/bilichat. ,即完整的指令为 /bilichat.xxx

指令前缀 部分也是可以修改的,例如 .env 中填入如下设置即可实现无 指令前缀

COMMAND_SEP=[""]
COMMAND_START=[""]
bilichat_cmd_start=""

指令名 如下表所示,其中除登录相关的指令均可自定义,可参考上文的 指令及订阅配置项

指令 权限 范围 参数 说明
sub 主人 群聊 UP 主的昵称或 UID 添加订阅
unsub 主人 群聊 UP 主的昵称或 UID,或 all 移除订阅,all 时为全移除
check 无限制 群聊 UP 主的昵称或 UID,或留空 查看本群订阅列表或指定 UP 主的配置
reset 主人 群聊 UP 主的昵称或 UID,或 all 重置指定 UP 主的推送配置,all 时为全重置
atall 主人 群聊 UP 主的昵称或 UID 全局 动态 直播 设置是否 at 全体成员
dynamic 主人 群聊 UP 主的昵称或 UID 是否开启该 UP 的动态通知
live 主人 群聊 UP 主的昵称或 UID 是否开启该 UP 的直播通知
checkdynamic 无限制 无限制 UP 主的昵称或 UID 查看指定 UP 主的最新一条动态
fetch 无限制 无限制 动态 ID,或回复包含此内容的消息 解析动态包含的图片
checklogin 主人 无限制 查看当前已登录的全部账号
qrlogin 主人 无限制 使用二维码登录 B 站,防止风控
logout 主人 无限制 账号的 UID 登出指定的账号

🙏 感谢

在此感谢以下开发者(项目)对本项目做出的贡献:

⏳ Star 趋势

Stargazers over time

nonebot-plugin-bilichat's People

Contributors

djkcyl avatar forchannot avatar hamo-reid avatar lgc2333 avatar well2333 avatar xxtg666 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

nonebot-plugin-bilichat's Issues

Bug: 发送检测到的动态和直播通知时报错

操作系统

Windows

Python 版本

3.11.1

NoneBot 版本

2.3.1

Bilichat 版本

5.10.2

描述问题

发送检测到的动态时报错,包括动态和直播都会报错 但是在bilichat中加入一个模块,这个模块中使用nb本身的接口去send一个字符串或者图片是可以发送的

插件的配置项

对同一视频的响应冷却时间(防止刷屏)

bilichat_cd_time = 120

网络请求重试次数

bilichat_neterror_retry = 3

是否使用浏览器截图(需要额外依赖)

bilichat_use_browser = True

是否开启词云(需要额外依赖)

bilichat_word_cloud = True

=== AI 总结相关 ===

官方总结接口

bilichat_official_summary = False

openai 接口(需要额外依赖)

bilichat_openai_token = sk-xxxxxxx

网络代理

bilichat_openai_proxy = "http://127.0.0.1:7890/"

COMMAND_SEP=[""]
COMMAND_START=[""]

命令的起始词,可设置为空

bilichat_cmd_start = ""

是否拦截事件(防止其他插件二次解析)

bilichat_block = True

webui使用路径

bilichat_webui_path = "bilichat"

bilichat_webui_path = ""

bilichat_cache_serive = "json"

bilichat_only_to_me = True

PORT=5963

截图或日志

image

Bug: No module named 'tiktoken_async'

操作系统

Linux

Python 版本

3.11.2

NoneBot 版本

1.2.6

Bilichat 版本

4.12.0

描述问题

nonebot启动失败,无法加载 nonebot_plugin_bilichat

插件的配置项

No response

截图或日志

image

12-06 10:09:20 [ERROR] nonebot | Failed to import "nonebot_plugin_bilichat"
Traceback (most recent call last):
  File "<string>", line 14, in <module>
  File "/root/qqbot/.venv/lib/python3.11/site-packages/nonebot/plugin/load.py", line 130, in load_from_toml
    return load_all_plugins(plugins, plugin_dirs)
  File "/root/qqbot/.venv/lib/python3.11/site-packages/nonebot/plugin/load.py", line 64, in load_all_plugins
    return manager.load_all_plugins()
  File "/root/qqbot/.venv/lib/python3.11/site-packages/nonebot/plugin/manager.py", line 176, in load_all_plugins
    return set(
  File "/root/qqbot/.venv/lib/python3.11/site-packages/nonebot/plugin/manager.py", line 177, in <genexpr>
    filter(None, (self.load_plugin(name) for name in self.available_plugins))
> File "/root/qqbot/.venv/lib/python3.11/site-packages/nonebot/plugin/manager.py", line 142, in load_plugin
    module = importlib.import_module(name)
  File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "/root/qqbot/.venv/lib/python3.11/site-packages/nonebot/plugin/manager.py", line 242, in exec_module
    super().exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/root/qqbot/.venv/lib/python3.11/site-packages/nonebot_plugin_bilichat/__init__.py", line 67, in <module>
    from . import adapters, commands, subscribe  # noqa: F401, E402
  File "/root/qqbot/.venv/lib/python3.11/site-packages/nonebot_plugin_bilichat/subscribe/__init__.py", line 9, in <module>
    from .dynamic import fetch_dynamics_grpc, fetch_dynamics_rest
  File "/root/qqbot/.venv/lib/python3.11/site-packages/nonebot_plugin_bilichat/subscribe/dynamic.py", line 15, in <module>
    from ..adapters.base_content_parsing import check_cd
  File "/root/qqbot/.venv/lib/python3.11/site-packages/nonebot_plugin_bilichat/adapters/base_content_parsing.py", line 13, in <module>
    from ..summary.text_to_image import t2i
  File "/root/qqbot/.venv/lib/python3.11/site-packages/nonebot_plugin_bilichat/summary/__init__.py", line 6, in <module>
    from .openai_summarise import openai_summarization
  File "/root/qqbot/.venv/lib/python3.11/site-packages/nonebot_plugin_bilichat/summary/openai_summarise.py", line 9, in <module>
    from .openai import get_small_size_transcripts, get_summarise_prompt, openai_req
  File "/root/qqbot/.venv/lib/python3.11/site-packages/nonebot_plugin_bilichat/summary/openai.py", line 7, in <module>
    import tiktoken_async
ModuleNotFoundError: No module named 'tiktoken_async'

bilichat_cache_serive的auto配置无法捕获No module named 'nonebot_plugin_mongodb'错误

升级到3.0(最新)版本后,如果不配置bilichat_cache_serive=json,保持默认的auto,会导致启动时抛出错误ModuleNotFoundError: No module named 'nonebot_plugin_mongodb',观察发现程序成功进入了except内并且运行了logger.info("bilichat_cache_serive can't use MongoDB as cache serive, using JsonFile"),但是仍然会抛出该错误。在我使用的插件中仅有bilichat有mongodb的需求
image

Bug: 出现异常

操作系统

Windows

Python 版本

3.10

NoneBot 版本

2.2.0

Bilichat 版本

5.6.0

描述问题

lib/fetch_dynamic.py与subscribe/dynamic.py产生循环导入问题

插件的配置项

No response

截图或日志

b69c8f7b8edc562cfa08ea4ab5cf5548

Bug: 出现异常

操作系统

Windows

Python 版本

3.9.7

NoneBot 版本

2.1.x

Bilichat 版本

5.9.2

描述问题

在触发/bili指令之后触发alcUnimeg的satori keyError
alc我在其他上面用的都没有问题,satori adapter在最近更新了的Message结构,alc也进行了同步更新,我看到本插件也使用了alc,但还是出现了问题,不知道是怎么回事,望解答或修复,
看到Plugin_meta里没写可以支持satori,如果真的不支持的话那我close了(
image

插件的配置项

bilichat_bilibili_cookie = "C:/bili_cookie.har"
bilichat_cache_serive = "json"
bilichat_command_to_me = False
bilichat_cmd_start = "bili"

对同一视频的响应冷却时间(防止刷屏)

bilichat_cd_time = 120

网络请求重试次数

bilichat_neterror_retry = 3

是否使用浏览器截图(需要额外依赖)

bilichat_use_browser = Flase

是否开启词云(需要额外依赖)

bilichat_word_cloud = False

=== AI 总结相关 ===

官方总结接口

bilichat_official_summary = True

openai 接口(需要额外依赖)

bilichat_openai_token = sk-

网络代理

bilichat_openai_proxy = "https://.top/"

截图或日志

05-06 08:35:04 [INFO] nonebot | Matcher(type='message', module=nonebot_plugin_bilichat.base_content_parsing, lineno=160) running complete
05-06 08:35:04 [ERROR] nonebot | Running Matcher(type='message', module=nonebot_plugin_bilichat.base_content_parsing, lineno=160) failed.
Traceback (most recent call last):
File "", line 17, in
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\nonebot_init_.py", line 335, in run
get_driver().run(*args, **kwargs)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\nonebot\drivers\fastapi.py", line 186, in run
uvicorn.run(
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\uvicorn\main.py", line 578, in run
server.run()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\uvicorn\server.py", line 61, in run
return asyncio.run(self.serve(sockets=sockets))
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\asyncio\runners.py", line 44, in run
return loop.run_until_complete(main)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\asyncio\base_events.py", line 629, in run_until_complete
self.run_forever()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\asyncio\windows_events.py", line 316, in run_forever
super().run_forever()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\asyncio\base_events.py", line 596, in run_forever
self._run_once()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\asyncio\base_events.py", line 1890, in _run_once
handle._run()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\asyncio\events.py", line 80, in _run
self._context.run(self._callback, *self._args)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\nonebot\message.py", line 476, in check_and_run_matcher
await _run_matcher(

File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\nonebot\message.py", line 428, in run_matcher
await matcher.run(bot, event, state, stack, dependency_cache)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\nonebot\internal\matcher\matcher.py", line 850, in run
await self.simple_run(bot, event, state, stack, dependency_cache)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\nonebot\internal\matcher\matcher.py", line 825, in simple_run
await handler(
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\nonebot\dependencies_init
.py", line 94, in call
return await cast(Callable[..., Awaitable[R]], self.call)(**values)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\nonebot_plugin_bilichat\base_content_parsing.py", line 179, in content_info
receipt = await msgs.send()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\nonebot_plugin_alconna\uniseg\message.py", line 918, in send
res = await fn.send_to(target, bot, msg)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\nonebot_plugin_alconna\uniseg\adapters\satori\exporter.py", line 170, in send_to
return await bot.send_message(target.id, message)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\nonebot\adapters\satori\bot.py", line 253, in send_message
return await self.message_create(channel_id=channel_id, content=str(message))
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\nonebot\internal\adapter\message.py", line 149, in str
return "".join(str(seg) for seg in self)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\nonebot\internal\adapter\message.py", line 149, in
return "".join(str(seg) for seg in self)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\nonebot\adapters\satori\message.py", line 428, in str
text = self.data["text"]
KeyError: 'text'

ModuleNotFoundError: No module named 'playwright._impl._api_types'

操作系统

Windows

Python 版本

3.12.2

NoneBot 版本

1.3.1

Bilichat 版本

3.2.0

描述问题

Bilichat和playwright均为最新版本,加载Bilichat时报错。

插件的配置项

No response

截图或日志

Traceback (most recent call last):
File "", line 12, in
File "C:\Code\nonebot\QQbot.venv\Lib\site-packages\nonebot\plugin\load.py", line 130, in load_from_toml
return load_all_plugins(plugins, plugin_dirs)
File "C:\Code\nonebot\QQbot.venv\Lib\site-packages\nonebot\plugin\load.py", line 64, in load_all_plugins
return manager.load_all_plugins()
File "C:\Code\nonebot\QQbot.venv\Lib\site-packages\nonebot\plugin\manager.py", line 176, in load_all_plugins
return set(
File "C:\Code\nonebot\QQbot.venv\Lib\site-packages\nonebot\plugin\manager.py", line 177, in
filter(None, (self.load_plugin(name) for name in self.available_plugins))

File "C:\Code\nonebot\QQbot.venv\Lib\site-packages\nonebot\plugin\manager.py", line 142, in load_plugin
module = importlib.import_module(name)
File "C:\Code\Python\Lib\importlib_init_.py", line 90, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1387, in _gcd_import
File "", line 1360, in find_and_load
File "", line 1331, in find_and_load_unlocked
File "", line 935, in load_unlocked
File "C:\Code\nonebot\QQbot.venv\Lib\site-packages\nonebot\plugin\manager.py", line 242, in exec_module
super().exec_module(module)
File "", line 995, in exec_module
File "", line 488, in call_with_frames_removed
File "C:\Code\nonebot\QQbot.venv\Lib\site-packages\nonebot_plugin_bilichat_init
.py", line 8, in
from . import adatpters
File "C:\Code\nonebot\QQbot.venv\Lib\site-packages\nonebot_plugin_bilichat\adatpters_init
.py", line 11, in
from ..content import Column, Dynamic, Video
File "C:\Code\nonebot\QQbot.venv\Lib\site-packages\nonebot_plugin_bilichat\content_init.py", line 2, in
from .dynamic import Dynamic
File "C:\Code\nonebot\QQbot.venv\Lib\site-packages\nonebot_plugin_bilichat\content\dynamic.py", line 4, in
from ..lib.draw.dynamic import draw_dynamic
File "C:\Code\nonebot\QQbot.venv\Lib\site-packages\nonebot_plugin_bilichat\lib\draw\dynamic_init.py", line 6, in
from .browser_shot import screenshot as draw_dynamic
File "C:\Code\nonebot\QQbot.venv\Lib\site-packages\nonebot_plugin_bilichat\lib\draw\dynamic\browser_shot.py", line 10, in
from playwright._impl._api_types import TimeoutError

关闭wordcloud后报错

init.py 中生成词云的逻辑在关闭词云后会报错,改成下面这样可以改正这个错误

 if plugin_config.bilichat_word_cloud:
        if image := await wordcloud(cache=cache, cid=str(info["cid"])):
            if "wordcloud" in plugin_config.bilichat_forword_msg:
                forword_list.append(V11_MS.image(image))
            else:
                await matcher.send(reply + V11_MS.image(image))  # type: ignore
        else:
            if "wordcloud" in plugin_config.bilichat_forword_msg:
                forword_list.append("视频无有效字幕")
                await forword_msg_v11(bot, event, forword_list)
            else:
                await matcher.finish(f"{reply}视频无有效字幕")

Bug: 出现异常

操作系统

Windows

Python 版本

3.11

NoneBot 版本

2.0

Bilichat 版本

4.7

描述问题

bilichat出错
image

插件的配置项

No response

截图或日志

No response

Bug: 出现异常

操作系统

Windows

Python 版本

3.11

NoneBot 版本

2

Bilichat 版本

new

描述问题

报错

关闭插件后可正常运行

插件的配置项

# 对同一视频的响应冷却时间(防止刷屏)
bilichat_cd_time = 120
# 网络请求重试次数
bilichat_neterror_retry = 3
# 是否使用浏览器截图(需要额外依赖)
bilichat_use_browser = True

# 是否开启词云(需要额外依赖)
bilichat_word_cloud = True

# === AI 总结相关 ===
# 官方总结接口
bilichat_official_summary = True

截图或日志

Task exception was never retrieved
future: <Task finished name='Task-3' coro=<Connection.run() done, defined at C:\Users\admin\Desktop\nonebot\New-QQ-Bot2\.venv\Lib\site-packages\playwright\_impl\_connection.py:265> exception=NotImplementedError()>
Traceback (most recent call last):
  File "C:\Users\admin\Desktop\nonebot\New-QQ-Bot2\.venv\Lib\site-packages\playwright\_impl\_connection.py", line 272, in run
    await self._transport.connect()
  File "C:\Users\admin\Desktop\nonebot\New-QQ-Bot2\.venv\Lib\site-packages\playwright\_impl\_transport.py", line 133, in connect
    raise exc
  File "C:\Users\admin\Desktop\nonebot\New-QQ-Bot2\.venv\Lib\site-packages\playwright\_impl\_transport.py", line 120, in connect
    self._proc = await asyncio.create_subprocess_exec(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\asyncio\subprocess.py", line 223, in create_subprocess_exec
    transport, protocol = await loop.subprocess_exec(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 1694, in subprocess_exec
    transport = await self._make_subprocess_transport(
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 502, in _make_subprocess_transport
    raise NotImplementedError
NotImplementedError
05-19 21:52:31 [ERROR] uvicorn | Traceback (most recent call last):
  File "C:\Users\admin\Desktop\nonebot\New-QQ-Bot2\.venv\Lib\site-packages\starlette\routing.py", line 732, in lifespan
    async with self.lifespan_context(app) as maybe_state:
  File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\contextlib.py", line 204, in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\admin\Desktop\nonebot\New-QQ-Bot2\.venv\Lib\site-packages\nonebot\drivers\fastapi.py", line 153, in _lifespan_manager
    await self._lifespan.startup()
  File "C:\Users\admin\Desktop\nonebot\New-QQ-Bot2\.venv\Lib\site-packages\nonebot\internal\driver\_lifespan.py", line 42, in startup
    await self._run_lifespan_func(self._startup_funcs)
  File "C:\Users\admin\Desktop\nonebot\New-QQ-Bot2\.venv\Lib\site-packages\nonebot\internal\driver\_lifespan.py", line 36, in _run_lifespan_func
    await cast(ASYNC_LIFESPAN_FUNC, func)()
  File "C:\Users\admin\Desktop\nonebot\New-QQ-Bot2\.venv\Lib\site-packages\nonebot_plugin_htmlrender\__init__.py", line 38, in init
    browser = await get_browser(**kwargs)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\admin\Desktop\nonebot\New-QQ-Bot2\.venv\Lib\site-packages\nonebot_plugin_htmlrender\browser.py", line 61, in get_browser
    return _browser if _browser and _browser.is_connected() else await init(**kwargs)
                                                                 ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\admin\Desktop\nonebot\New-QQ-Bot2\.venv\Lib\site-packages\nonebot_plugin_htmlrender\browser.py", line 32, in init
    _playwright = await async_playwright().start()
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\admin\Desktop\nonebot\New-QQ-Bot2\.venv\Lib\site-packages\playwright\async_api\_context_manager.py", line 51, in start
    return await self.__aenter__()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\admin\Desktop\nonebot\New-QQ-Bot2\.venv\Lib\site-packages\playwright\async_api\_context_manager.py", line 46, in __aenter__
    playwright = AsyncPlaywright(next(iter(done)).result())
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\admin\Desktop\nonebot\New-QQ-Bot2\.venv\Lib\site-packages\playwright\_impl\_transport.py", line 120, in connect
    self._proc = await asyncio.create_subprocess_exec(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\asyncio\subprocess.py", line 223, in create_subprocess_exec
    transport, protocol = await loop.subprocess_exec(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 1694, in subprocess_exec
    transport = await self._make_subprocess_transport(
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 502, in _make_subprocess_transport
    raise NotImplementedError
NotImplementedError

05-19 21:52:31 [ERROR] uvicorn | Application startup failed. Exiting.

优化生成总结图片的性能

希望能解决的问题

在最后生成总结图片的时候,超级占用内存跟CPU,性能差的机器直接卡死被带走
image

描述所需要的功能

希望提供一个不生成图片,直接发送总结文字的选项

[新功能] 添加配置项修改openai.api_base

考虑到国内服务器挂代理有可能会出事,所以自己搭了一个openai api的镜像,可在国内访问的那种,希望插件能支持这样用
设置 openai.api_base 就可以实现

check_adapter_can_send_forword_msg 没有正确返回

虽然合并消息会被风控,但这个函数确实忘记返回了

 @validator("bilichat_forword_msg")
    def check_adapter_can_send_forword_msg(cls, v):
        if not v:
            return
        drivers = get_driver()._adapters.keys()
        if "OneBot V12" in drivers:
            logger.warning(
                "Forword_msg is not implemented by OneBot V12, events of OneBot V12 will not be sent as forword_msg!"
            )
        if "OneBot V11" in drivers:
            logger.warning(
                "Using forward_msg may cause serious risk control restrictions, please enable this feature with caution!"
            )
        return v # <--- 少了这个

Bug: 安装插件之后程序无法正常退出?

操作系统

Linux

Python 版本

3.11.9

NoneBot 版本

2.3

Bilichat 版本

5.10.2

描述问题

安装插件后,按ctrl+v结束程序时程序卡死无法退出,必须关闭终端,卸载插件后恢复正常

插件的配置项

No response

截图或日志

(nonebot2) ling@ling-Ubuntu:~/公共的/nonebot2/lingbot2$ nb run
05-19 17:45:38 [SUCCESS] nonebot | NoneBot is initializing...
05-19 17:45:38 [INFO] nonebot | Current Env: dev
05-19 17:45:38 [DEBUG] nonebot | Loaded Config: {'driver': '~fastapi', 'host': IPv4Address('127.0.0.1'), 'port': 8080, 'log_level': 'DEBUG', 'api_timeout': 30.0, 'superusers': {**'}, 'nickname': set(), 'command_start': {''}, 'command_sep': {'.'}, 'session_expire_timeout': datetime.timedelta(seconds=120), 'environment': 'dev', 'ps_only_su': 'True', 'duel': {'nickname': '嘎哒哒'}, 'ffmpeg': '/usr/bin/ffmpeg', 'pixiv_r18': 'False', 'search_limit': 2, 'record_priority': 99, 'saucenao_api_key': 'c289aa0c8ee0d3ce65e46e5f26f7031c1c9f9284', 'search_keyword': '图搜图'}
05-19 17:45:38 [DEBUG] nonebot | Succeeded to load adapter "OneBot V11"
05-19 17:45:38 [DEBUG] nonebot | Succeeded to load adapter "Console"
05-19 17:45:38 [ERROR] nonebot | Failed to import "nonebot_plugin_picsearcher"
Traceback (most recent call last):
File "/home/ling/公共的/nonebot2/lingbot2/bot.py", line 14, in
nonebot.load_plugin('nonebot_plugin_picsearcher')
File "/home/ling/anaconda3/envs/nonebot2/lib/python3.11/site-packages/nonebot/plugin/load.py", line 40, in load_plugin
return manager.load_plugin(module_path)

File "/home/ling/anaconda3/envs/nonebot2/lib/python3.11/site-packages/nonebot/plugin/manager.py", line 167, in load_plugin
module = importlib.import_module(self._third_party_plugin_ids[name])
File "/home/ling/anaconda3/envs/nonebot2/lib/python3.11/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1140, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'nonebot_plugin_picsearcher'
05-19 17:45:38 [SUCCESS] nonebot | Succeeded to load plugin "echo" from "nonebot.plugins.echo"
05-19 17:45:38 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_simplemusic" from "lingbot2.plugins.nonebot_plugin_simplemusic"
05-19 17:45:38 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_alconna:uniseg" from "nonebot_plugin_alconna.uniseg"
05-19 17:45:38 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_alconna"
05-19 17:45:38 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_session"
05-19 17:45:38 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_userinfo"
05-19 17:45:38 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_localstore"
05-19 17:45:39 [WARNING] nonebot_plugin_memes | 表情列表解析失败,将重新生成
05-19 17:45:39 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_memes"
05-19 17:45:39 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_duel" from "lingbot2.plugins.nonebot_plugin_duel"
05-19 17:45:39 [SUCCESS] nonebot | Succeeded to load plugin "nonebot-plugin-mcpic-main" from "lingbot2.plugins.nonebot-plugin-mcpic-main"
05-19 17:45:39 [INFO] nonebot_plugin_bilichat | nonebot_plugin_bilichat 缓存文件夹 -> /home/ling/.cache/nonebot2/nonebot_plugin_bilichat
05-19 17:45:39 [INFO] nonebot_plugin_bilichat | nonebot_plugin_bilichat 数据文件夹 -> /home/ling/.local/share/nonebot2/nonebot_plugin_bilichat
05-19 17:45:39 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_htmlrender"
05-19 17:45:39 [INFO] nonebot_plugin_bilichat | bilichat_use_browser 所需依赖已安装,采用浏览器渲染模式
05-19 17:45:39 [INFO] nonebot_plugin_bilichat | bilichat_cache_serive 无法使用 MongoDB 作为缓存服务, 使用 JSON 文件作为缓存服务
05-19 17:45:39 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_apscheduler"
05-19 17:45:39 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_auto_bot_selector"
05-19 17:45:39 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_waiter"
05-19 17:45:39 [WARNING] nonebot_plugin_bilichat | sentry_sdk 未安装
05-19 17:45:39 [INFO] nonebot_plugin_bilichat | 使用 JSON 文件作为缓存服务
05-19 17:45:39 [DEBUG] nonebot_plugin_bilichat | Loading font: sarasa-mono-sc-semibold.ttf
05-19 17:45:39 [DEBUG] nonebot_plugin_bilichat | Font sarasa-mono-sc-semibold.ttf found in local
05-19 17:45:39 [DEBUG] nonebot_plugin_bilichat | Loading font: sarasa-mono-sc-bold.ttf
05-19 17:45:39 [DEBUG] nonebot_plugin_bilichat | Font sarasa-mono-sc-bold.ttf found in local
05-19 17:45:39 [DEBUG] nonebot_plugin_bilichat | Loading font: vanfont.ttf
05-19 17:45:39 [DEBUG] nonebot_plugin_bilichat | Font vanfont.ttf found in local
05-19 17:45:39 [DEBUG] nonebot_plugin_bilichat | Loading font: HarmonyOS_Sans_SC_Medium.ttf
05-19 17:45:39 [DEBUG] nonebot_plugin_bilichat | Font HarmonyOS_Sans_SC_Medium.ttf found in local
05-19 17:45:39 [DEBUG] nonebot_plugin_bilichat | Loading font: nte.ttf
05-19 17:45:39 [DEBUG] nonebot_plugin_bilichat | Font nte.ttf found in local
05-19 17:45:39 [SUCCESS] nonebot_plugin_bilichat |



05-19 17:45:39 [WARNING] nonebot | Duplicated prefix rule "关注"
05-19 17:45:39 [WARNING] nonebot | Duplicated prefix rule "关注"
05-19 17:45:39 [WARNING] nonebot | Duplicated prefix rule "订阅"
05-19 17:45:39 [WARNING] nonebot | Duplicated prefix rule "bilichat.sub"
05-19 17:45:39 [WARNING] nonebot | Duplicated prefix rule "bilichat.unsub"
05-19 17:45:39 [WARNING] nonebot | Duplicated prefix rule "退订"
05-19 17:45:39 [WARNING] nonebot | Duplicated prefix rule "取关"
05-19 17:45:39 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_bilichat"
05-19 17:45:39 [SUCCESS] nonebot | Succeeded to load plugin "YetAnotherPicSearch"
05-19 17:45:39 [SUCCESS] nonebot | Succeeded to load plugin "jock" from "lingbot2.plugins.jock"
05-19 17:45:39 [SUCCESS] nonebot | Succeeded to load plugin "chats" from "lingbot2.plugins.chats"
05-19 17:45:39 [SUCCESS] nonebot | Succeeded to load plugin "AI_voice" from "lingbot2.plugins.AI_voice"
05-19 17:45:40 [SUCCESS] nonebot | Succeeded to load plugin "weather" from "lingbot2.plugins.weather"
05-19 17:45:40 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_epicfree"
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector memory_stat
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector swap_stat
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector bots
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector process_status
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector disk_usage
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector disk_io
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector nonebot_run_time
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector system_run_time
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector nonebot_version
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector ps_version
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector time
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector python_version
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector system_name
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector cpu_brand
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector cpu_count_logical
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector cpu_count
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector cpu_percent
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector cpu_freq
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector network_io
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered collector network_connection
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered global jinja filter format_cpu_freq
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered global jinja filter percent_to_color
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered global jinja filter auto_convert_unit
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Registered global jinja filter br
05-19 17:45:40 [DEBUG] nonebot_plugin_picstatus | Loaded template default TemplateInfo(collectors={'cpu_brand', 'nonebot_run_time', 'cpu_percent', 'system_run_time', 'network_io', 'cpu_count_logical', 'memory_stat', 'nonebot_version', 'cpu_count', 'disk_io', 'swap_stat', 'system_name', 'python_version', 'ps_version', 'network_connection', 'process_status', 'time', 'bots', 'cpu_freq', 'disk_usage'}, config=TemplateConfig(ps_default_components=['header', 'cpu_mem', 'disk', 'network', 'process', 'footer'], ps_default_additional_css=[], ps_default_additional_script=[]), renderer=<function render at 0x76e8c87882c0>)
05-19 17:45:40 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_picstatus" from "lingbot2.plugins.nonebot_plugin_picstatus"
05-19 17:45:40 [SUCCESS] nonebot | Succeeded to load plugin "img" from "lingbot2.plugins.img"
05-19 17:45:40 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_pixiv" from "lingbot2.plugins.nonebot_plugin_pixiv"
05-19 17:45:40 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_alconna"
05-19 17:45:40 [SUCCESS] nonebot | Succeeded to load plugin "saylove" from "lingbot2.plugins.saylove"
05-19 17:45:40 [SUCCESS] nonebot | Running NoneBot...
05-19 17:45:40 [DEBUG] nonebot | Loaded adapters: OneBot V11, Console
05-19 17:45:40 [INFO] uvicorn | Started server process [37584]
05-19 17:45:40 [INFO] uvicorn | Waiting for application startup.
05-19 17:45:40 [INFO] nonebot_plugin_memes | 正在检查资源文件...
05-19 17:45:42 [SUCCESS] nonebot | Console unmounted.
05-19 17:45:42 [WARNING] nonebot | Press Ctrl-C for Application exit
05-19 17:45:42 [INFO] nonebot_plugin_auto_bot_selector | pop bot Bot(type='Console', self_id='console')
05-19 17:45:42 [INFO] nonebot_plugin_bilichat | 重新检查可推送的用户
05-19 17:45:42 [INFO] nonebot_plugin_bilichat | 正在刷新激活的UP列表
05-19 17:45:42 [DEBUG] nonebot_plugin_bilichat | 正在尝试激活用户 QQ Group--1149228175 订阅的 UP
05-19 17:45:42 [DEBUG] nonebot_plugin_bilichat | 用户 QQ Group-
-1149228175 无可用推送 Bot
05-19 17:45:42 [DEBUG] nonebot_plugin_bilichat | 正在尝试激活用户 QQ Group--317701038 订阅的 UP
05-19 17:45:42 [DEBUG] nonebot_plugin_bilichat | 用户 QQ Group-
-317701038 无可用推送 Bot
05-19 17:45:42 [DEBUG] nonebot_plugin_bilichat | 已激活的UP:
无已激活的UP
05-19 17:45:42 [INFO] nonebot_plugin_bilichat | 检查可推送的用户完成
^C05-19 17:45:42 [INFO] uvicorn | Shutting down
05-19 17:45:42 [INFO] uvicorn | Waiting for application shutdown.
05-19 17:45:42 [INFO] nonebot_plugin_htmlrender | Browser Stopped.
05-19 17:45:42 [INFO] nonebot_plugin_apscheduler | Scheduler Shutdown
05-19 17:45:42 [DEBUG] nonebot | Waiting for running bot connection hooks...
05-19 17:45:45 [DEBUG] meme_generator | Available resource urls: ['https://raw.githubusercontent.com/MeetWq/meme-generator/', 'https://fastly.jsdelivr.net/gh/MeetWq/meme-generator@', 'https://raw.gitmirror.com/MeetWq/meme-generator/'
image
]

Feature: 增加通过uid订阅up主

希望能解决的问题

增加通过uid订阅up主

描述所需要的功能

async def search_user(keyword: str):
"""
搜索用户
"""
url = "https://app.bilibili.com/x/v2/search/type"
data = {"build": "6840300", "keyword": keyword, "type": "2", "ps": 5}
return await get(url, params=data, cookies=get_cookies())

刚发现其实这个接口是可以通过keyword=uid:{uid}来传入uid进行查询

因为通过名称sub可能会有up主名字奇奇怪怪和一些特殊符号,可以考虑只保留uid绑定(限制isdigit)或者两者都兼容

Feature: 功能描述 添加对B站原生AI视频总结接口的支持

希望能解决的问题

近期B站上线了“AI视频总结”的功能,入口位于B站网页版的视频页下方,点击后即可打开一个AI生成的总结页面
以下是对该入口的逻辑观察:

  1. 该入口会固定出现在视频页的下方,与三连按钮在同一水平位置;
  2. 视频的类型、发布时间、热门程度不影响入口的出现逻辑;
  3. 视频的音频为音乐、无声、嘈杂时,该入口不可点击;
  4. 多次请求后,该接口仍可用。

预测该接口的AI总结逻辑可能为调用字幕接口进行生成,且暂时没有请求限制及加密逻辑

https://s2.loli.net/2023/10/26/v4LwkQInodD5lyZ.png

https://s2.loli.net/2023/10/26/PiNmGJOy8RpeQ9S.png

描述所需要的功能

希望能添加对该接口的调用支持

直播样式及查动态的推荐

希望能解决的问题

带链接的通知样式似乎会增加风控几率,可否增加纯截图版的推送样式

描述所需要的功能

希望添加小程序样式的开播通知
查动态希望增加理解(如果动态为视频动态,则返回视频短链,不是视频类型则照原样返回截图)

Bug: playwright版本异常导致出现问题

操作系统

Windows

Python 版本

尝试过3.10和3.11

NoneBot 版本

2.1.2

Bilichat 版本

4.11.2

描述问题

这里写的playwright为>=1.17.2

dependencies = [
"Pygments>=2.10.0",
"aiofiles>=0.8.0",
"jinja2>=3.0.3",
"markdown>=3.3.6",
"nonebot2[fastapi]>=2.0.0",
"playwright>=1.17.2",
"pymdown-extensions>=9.1",
"python-markdown-math>=0.8",
]

这里写的playwright为1.36.0

[[package]]
name = "playwright"
version = "1.36.0"
requires_python = ">=3.8"
summary = "A high-level API to automate web browsers"
dependencies = [
"greenlet==2.0.2",
"pyee==9.0.4",
"typing-extensions; python_version <= \"3.8\"",
]
files = [
{file = "playwright-1.36.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:b7c6ddfca2b141b0385387cc56c125b14ea867902c39e3fc650ddd6c429b17da"},
{file = "playwright-1.36.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:428a719a6c7e40781c19860ed813840ac2d63678f7587abe12e800ea030d4b7e"},
{file = "playwright-1.36.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:4e396853034742b76654cdab27422155d238f46e4dc6369ea75854fafb935586"},
{file = "playwright-1.36.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:72e80076e595f5fcd8ebd89bf6635ad78e4bafa633119faed8b2568d17dbd398"},
{file = "playwright-1.36.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffbb927679b62fad5071439d5fe0840af46ad1844bc44bf80e1a0ad706140c98"},
{file = "playwright-1.36.0-py3-none-win32.whl", hash = "sha256:84213339f179fd2a70f77ea7faea0616d74871349d556c53a1ecb7dd5097973c"},
{file = "playwright-1.36.0-py3-none-win_amd64.whl", hash = "sha256:89ca2261bb00b67d3dff97691cf18f4347ee0529a11e431e47df67b703d4d8fa"},
]

实际安装会装上最新版1.40.0
https://pypi.org/project/playwright/

然后就会导致
ModuleNotFoundError: No module named 'playwright._impl._api_types'
然后插件不会响应任何事件

手动回到1.36版本后正常

查询可知在playwright 1.14.0中,新的导入方式为playwright._impl._errors.Error而不是playwright._impl._api_types.Error
image

希望以后能把依赖版本号写死吧,不然版本问题之后会挺头疼

插件的配置项

No response

截图或日志

No response

Bug: 严重问题,tiktoken-async无法兼容Python 3.12

操作系统

Windows

Python 版本

Python 3.12.2

NoneBot 版本

最新

Bilichat 版本

最新

描述问题

  To install, run `rustup component add rustc`
  error: can't find Rust compiler

  If you are using an outdated pip version, it is possible a prebuilt wheel is available for this package but pip is not able to install from it. Installing from the wheel would avoid the need for a Rust compiler.

  To update pip, run:

      pip install --upgrade pip

  and then retry package installation.

  If you did intend to build this package from source, try installing a Rust compiler from your system package manager and ensure it is on the PATH during installation. Alternatively, rustup (available at https://rustup.rs) is the recommended way to download and update the Rust compiler toolchain.
  [end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for tiktoken-async
Failed to build tiktoken-async
ERROR: Could not build wheels for tiktoken-async, which is required to install pyproject.toml-based projects

我网上搜索了一大圈,发现tiktoken最近才兼容Python 3.12,但tiktoken-async并不兼容3.12,只兼容3.11,就算下载了Rust来编译也无法正常工作,导致pip install nonebot-plugin-bilichat[all]往往卡在tiktoken-async那边无法正常运作

插件的配置项

No response

截图或日志

No response

KeyError bili_number

当发送up主个人空间时会出现KeyError bili_number
bilichat版本: 1.8.0
nb端收到的日志

04-29 16:24:17 [SUCCESS] nonebot | OneBot V11 2029172546 | [message.group.normal]: Message -1136853180 from 1492164106@[群:710768309] '&#91;&#91;分享&#93;联合国的个人空间&#93;请使用最新版本手机QQ查看[json:data={"app":"com.te
ncent.structmsg","desc":"新闻","bizsrc":"","view":"news...]'

gocq收到的日志

: &#91;&#91;分享&#93;联合国的个人空间&#93;请使用最新版本手机QQ查看[CQ:json,data={"app":"com.tencent.structmsg"&#44;"desc":"新闻"&#44;"bizsrc":""&#44;"view":"news"&#44;"ver":"0.0.0.1"&#44;"prompt":"&#91;分享&#93;联合国的个人空间"&#44;"meta":{"news":{"action":""&#44;"android_pkg_name":""&#44;"app_type":1&#44;"appid":100951776&#44;"ctime":1682756365&#44;"desc":"你感兴趣的视频都在B站"&#44;"jumpUrl":"https:\/\/b23.tv\/xrbcW36?share_medium=android&amp;share_source=qq&amp;bbid=XX8E8208EF0786F05E19485C7F78D671AD1EB&amp;ts=1682756360079"&#44;"preview":"https:\/\/pic.ugcimg.cn\/fb4fd72800eab6723105af744f9259b6\/jpg1"&#44;"source_icon":"https:\/\/open.gtimg.cn\/open\/app_icon\/00\/95\/17\/76\/100951776_100_m.png?t=1682411052"&#44;"source_url":""&#44;"tag":"哔哩哔哩"&#44;"title":"联合国的个人空间"&#44;"uin":2801303328}}&#44;"config":{"ctime":1682756365&#44;"forward":true&#44;"token":"dcf97000fe48fcc9a56cd659d3010e9c"&#44;"type":"normal"}}] (-1136853180)

报错信息如下

04-29 16:19:28 [ERROR] nonebot | Running Matcher(type='message', module=nonebot_plugin_bilichat) failed.
Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\LittlePaimon\bot.py", line 38, in <module>
    nonebot.run(app="__mp_main__:app", access_log=False)
  File "C:\Users\Administrator\Desktop\LittlePaimon\.venv\lib\site-packages\nonebot\__init__.py", line 309, in run
    get_driver().run(*args, **kwargs)
  File "C:\Users\Administrator\Desktop\LittlePaimon\.venv\lib\site-packages\nonebot\drivers\fastapi.py", line 198, in run
    uvicorn.run(
  File "C:\Users\Administrator\Desktop\LittlePaimon\.venv\lib\site-packages\uvicorn\main.py", line 569, in run
    server.run()
  File "C:\Users\Administrator\Desktop\LittlePaimon\.venv\lib\site-packages\uvicorn\server.py", line 60, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 628, in run_until_complete
    self.run_forever()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\windows_events.py", line 316, in run_forever
    super().run_forever()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 595, in run_forever
    self._run_once()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 1881, in _run_once
    handle._run()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "C:\Users\Administrator\Desktop\LittlePaimon\.venv\lib\site-packages\nonebot\message.py", line 141, in _check_matcher
    await _run_matcher(Matcher, bot, event, state, stack, dependency_cache)
> File "C:\Users\Administrator\Desktop\LittlePaimon\.venv\lib\site-packages\nonebot\message.py", line 187, in _run_matcher
    await matcher.run(bot, event, state, stack, dependency_cache)
  File "C:\Users\Administrator\Desktop\LittlePaimon\.venv\lib\site-packages\nonebot\internal\matcher\matcher.py", line 753, in run
    await self.simple_run(bot, event, state, stack, dependency_cache)
  File "C:\Users\Administrator\Desktop\LittlePaimon\.venv\lib\site-packages\nonebot\internal\matcher\matcher.py", line 728, in simple_run
    await handler(
  File "C:\Users\Administrator\Desktop\LittlePaimon\.venv\lib\site-packages\nonebot\dependencies\__init__.py", line 108, in __call__
    return await cast(Callable[..., Awaitable[R]], self.call)(**values)
  File "C:\Users\Administrator\Desktop\LittlePaimon\.venv\lib\site-packages\nonebot_plugin_bilichat\__init__.py", line 122, in video_info
    bili_number, uid = state["bili_number"], state["_uid_"]
KeyError: 'bili_number'

[bug反馈]插件黑白名单没有校验user_id,channel_id

https://github.com/Aunly/nonebot-plugin-bilichat/blob/09bd3007d96fb6629633fa2bebf5c36c00a9e31b/nonebot_plugin_bilichat/__init__.py#L113-L115

这里直接返回的是配置项的是否允许私聊,并没有对user_id进行校验

https://github.com/Aunly/nonebot-plugin-bilichat/blob/09bd3007d96fb6629633fa2bebf5c36c00a9e31b/nonebot_plugin_bilichat/__init__.py#L124-L126

channel_id也是同上,这里进行二次校验的话,黑白名单也就不仅仅只对群生效,qq号和频道号也可以用于黑白名单

Bug: 报错There is no current event loop in thread 'MainThread'.

操作系统

Windows

Python 版本

Python 3.8.8

NoneBot 版本

nonebot cli version 1.2.7

Bilichat 版本

v4.12.1

描述问题

新建nonebot2项目后,按教程安装bilichat和手动安装缺失依赖后,报错There is no current event loop in thread 'MainThread'.

插件的配置项

No response

截图或日志

QQ图片20231210121340

Bug: mirai2无回复

操作系统

Linux

Python 版本

3.10.12

NoneBot 版本

nonebot cli version 1.2.8

Bilichat 版本

5.1.3

描述问题

nonebot无法回复消息,如输入“/查看”,后台能看到nonebot接受到了消息,但qq无回应,使用的适配器是mirai2,看上去是“Handler Dependent(call=check_sub) skipped”的问题

01-08 22:36:25 [SUCCESS] nonebot | mirai2 1361804427 | [GroupMessage]: {'self_id': ***, 'type': 'GroupMessage', 'message_chain': [{'type': 'Plain', 'data': {'text': '/查看'}}], 'source': {'id': 4259, 'time': '2024-01-08T14:36:25+00:00'}, 'sender': {'id': ***, 'name': '七九殇', 'special_title': '', 'permission': 'MEMBER', 'join_timestamp': 1574145563, 'last_speak_timestamp': 1704724585, 'mute_time_remaining': 0, 'group': {'id': , 'name': '', 'permission': 'MEMBER'}}, 'quote': None, 'to_me': True}
01-08 22:36:25 [DEBUG] nonebot | Checking for matchers in priority 1...
01-08 22:36:25 [INFO] nonebot | Event will be handled by Matcher(type='message', module=nonebot_plugin_bilichat.commands.subs, lineno=15)
01-08 22:36:25 [DEBUG] nonebot | Running Matcher(type='message', module=nonebot_plugin_bilichat.commands.subs, lineno=15)
01-08 22:36:25 [DEBUG] nonebot | Running handler Dependent(call=check_sub)
01-08 22:36:25 [DEBUG] nonebot | Handler Dependent(call=check_sub) skipped
01-08 22:36:25 [INFO] nonebot | Matcher(type='message', module=nonebot_plugin_bilichat.commands.subs, lineno=15) running complete
01-08 22:36:25 [DEBUG] nonebot | Checking for matchers completed

插件的配置项

DRIVER=~fastapi+~websockets
HOST=127.0.0.1
PORT=17501
LOG_LEVEL=DEBUG
SUPERUSERS=["***"]
COMMAND_START=["/"]

MIRAI_HOST=localhost
MIRAI_PORT=17500
VERIFY_KEY=***
MIRAI_QQ=[***]

bilichat_cd_time = 120
bilichat_neterror_retry = 3
bilichat_use_browser = True
bilichat_text_fonts = "yahei"
bilichat_webui_path = "bilichat"
bilichat_cache_serive = "json"
bilichat_dynamic = True
bilichat_basic_info = True
bilichat_whitelist = ["***"]

截图或日志

echo插件正常回复,bilichat无回复
4
1
2

Feature: 希望添加一个登录多账号功能

希望能解决的问题

B站号临时冻结

描述所需要的功能

只登录一个B站号的情况下,关注过多,或多人开播会出现B站账号临时冻结的情况,希望添加多个B站账号进行轮询

想单独使用某个模块

词云和总结看来在env配置行为可以进行使用与不使用,不过不知道“基本信息”的这块是否也可以单独启用与禁用,譬如我目前的需求是想单独使用ai的总结,但不出现视频解析信息和词云,词云可以禁用,但解析的基本信息不知道是否可以在env里填写配置禁用,麻烦大佬了😂

代理配置是填什么格式

机子是国内的,打算使用代理,但是代理配置一填写就报错
要加http://或其他什么吗
报错日志:

06-05 21:12:27 [ERROR] nonebot | Failed to import "nonebot_plugin_bilichat"
Traceback (most recent call last):
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\site-packages\anyio\_core\_sockets.py", line 186, in connect_tcp
    addr_obj = ip_address(remote_host)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\ipaddress.py", line 54, in ip_address
    raise ValueError(f'{address!r} does not appear to be an IPv4 or IPv6 address')
ValueError: 'openaipublic.blob.core.windows.net' does not appear to be an IPv4 or IPv6 address

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpcore\backends\asyncio.py", line 111, in connect_tcp
    stream: anyio.abc.ByteStream = await anyio.connect_tcp(
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\site-packages\anyio\_core\_sockets.py", line 189, in connect_tcp
    gai_res = await getaddrinfo(
asyncio.exceptions.CancelledError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpcore\_exceptions.py", line 10, in map_exceptions
    yield
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpcore\backends\asyncio.py", line 110, in connect_tcp
    with anyio.fail_after(timeout):
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\site-packages\anyio\_core\_tasks.py", line 118, in __exit__
    raise TimeoutError
TimeoutError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpx\_transports\default.py", line 60, in map_httpcore_exceptions
    yield
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpx\_transports\default.py", line 353, in handle_async_request
    resp = await self._pool.handle_async_request(req)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpcore\_async\connection_pool.py", line 253, in handle_async_request
    raise exc
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpcore\_async\connection_pool.py", line 237, in handle_async_request
    response = await connection.handle_async_request(request)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpcore\_async\connection.py", line 86, in handle_async_request
    raise exc
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpcore\_async\connection.py", line 63, in handle_async_request
    stream = await self._connect(request)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpcore\_async\connection.py", line 111, in _connect
    stream = await self._network_backend.connect_tcp(**kwargs)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpcore\backends\auto.py", line 29, in connect_tcp
    return await self._backend.connect_tcp(
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpcore\backends\asyncio.py", line 109, in connect_tcp
    with map_exceptions(exc_map):
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\contextlib.py", line 153, in __exit__
    self.gen.throw(typ, value, traceback)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpcore\_exceptions.py", line 14, in map_exceptions
    raise to_exc(exc)
httpcore.ConnectTimeout

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "E:\IDEAyes\BOT\nonebot2\bot.py", line 38, in <module>
    nonebot.load_plugin("nonebot_plugin_bilichat")
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot\plugin\load.py", line 37, in load_plugin
    return manager.load_plugin(module_path)
> File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot\plugin\manager.py", line 141, in load_plugin
    module = importlib.import_module(name)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot\plugin\manager.py", line 240, in exec_module
    super().exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot_plugin_bilichat\__init__.py", line 49, in <module>
    from .summary import summarization
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot_plugin_bilichat\summary\__init__.py", line 12, in <module>
    from .openai_summarise import openai_summarization
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot_plugin_bilichat\summary\openai_summarise.py", line 10, in <module>
    from .openai import get_small_size_transcripts, get_summarise_prompt, openai_req
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot_plugin_bilichat\summary\openai.py", line 15, in <module>
    tiktoken_enc = asyncio.run(tiktoken_async.encoding_for_model(plugin_config.bilichat_openai_model))
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 646, in run_until_complete
    return future.result()
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\tiktoken_async\model.py", line 67, in encoding_for_model
    return await get_encoding(model_encoding_name)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\tiktoken_async\registry.py", line 67, in get_encoding
    enc = Encoding(**await constructor())
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\tiktoken_async_ext\openai_public.py", line 64, in cl100k_base
    mergeable_ranks = await load_tiktoken_bpe(
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\tiktoken_async\load.py", line 118, in load_tiktoken_bpe
    contents = await read_file_cached(tiktoken_bpe_file)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\tiktoken_async\load.py", line 48, in read_file_cached
    contents = await read_file(blobpath)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\tiktoken_async\load.py", line 25, in read_file
    resp = await client.get(blobpath)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpx\_client.py", line 1757, in get
    return await self.request(
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpx\_client.py", line 1533, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpx\_client.py", line 1620, in send
    response = await self._send_handling_auth(
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpx\_client.py", line 1648, in _send_handling_auth
    response = await self._send_handling_redirects(
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpx\_client.py", line 1685, in _send_handling_redirects
    response = await self._send_single_request(request)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpx\_client.py", line 1722, in _send_single_request
    response = await transport.handle_async_request(request)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpx\_transports\default.py", line 352, in handle_async_request
    with map_httpcore_exceptions():
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\contextlib.py", line 153, in __exit__
    self.gen.throw(typ, value, traceback)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\httpx\_transports\default.py", line 77, in map_httpcore_exceptions
    raise mapped_exc(message) from exc
httpx.ConnectTimeout

[意见征集] 隐藏无意义的视频总结

对于无意义的视频,现版本的程序会输出一个“无意义”的回复,目前正在考虑新增一个配置项来关闭此输出,但对于具体如何实现和作用范围仍有一些需要考虑的地方。

  1. 无意义的内容是否应记录为视频无意义,避免二次总结。
  2. 此设置是否仅针对openai,是否应包含newbing
  3. 无意义视频是直接关闭返回信息,还是返回一个固定的简短prompt来提示输出无意义
  4. 总结失败和总结无意义是否需要区分,如何区分
    ...

总之对此功能有任何疑问或建议均可以在此issue下提出,这将极大帮助我们完善此插件的设计工作

请问qq端的nonebot到底怎么部署?

操作系统

Windows

Python 版本

3.10

NoneBot 版本

lastest

Bilichat 版本

lastest

描述问题

如题,我看逻辑似乎是在qq端接收smslogin消息,但是qq端如何接入?我之前使用过gocqhttp,但是对这块不太熟,我似乎没有在项目里找到qq端消息接收回调。
如果尚未接入QQ的话,我应该如何登录?能给个教程吗?

插件的配置项

No response

截图或日志

No response

动态及专栏browser_shot字体问题

操作系统

Linux

Python 版本

3.10.8

NoneBot 版本

2.3.0

Bilichat 版本

5.10.2

描述问题

动态及专栏browser_shot字体无法正常显示。
03DBCCF9F1A00F1B9D53622CAEC680A5

插件的配置项

COMMAND_SEP=[""]
COMMAND_START=[""]
bilichat_cmd_start=""

bilichat_cd_time = 120
bilichat_neterror_retry = 3
bilichat_use_browser = True

截图或日志

后台无报错。
截屏2024-05-12 20 21 01

Feature: 细化推送配置

希望能解决的问题

希望上下播@全体可以分离

描述所需要的功能

直播通知对开播有高需求,但是下播@全体感觉不太合适

视频总结出错,请求帮助

请问这个应该如何解决?

04-22 20:30:57 [ERROR] nonebot_plugin_bilichat | Video(Column) av441997088 summary failed: received 1000 (OK); then sent 1000 (OK)
Traceback (most recent call last):
  File "<string>", line 21, in <module>
  File "D:\code\bot\nonebot\Hao_Tian_Bot\.venv\lib\site-packages\nonebot\__init__.py", line 309, in run
    get_driver().run(*args, **kwargs)
  File "D:\code\bot\nonebot\Hao_Tian_Bot\.venv\lib\site-packages\nonebot\drivers\fastapi.py", line 198, in run
    uvicorn.run(
  File "D:\code\bot\nonebot\Hao_Tian_Bot\.venv\lib\site-packages\uvicorn\main.py", line 568, in run
    server.run()
  File "D:\code\bot\nonebot\Hao_Tian_Bot\.venv\lib\site-packages\uvicorn\server.py", line 59, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "D:\Program Files\Python310\lib\asyncio\runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "D:\Program Files\Python310\lib\asyncio\base_events.py", line 633, in run_until_complete
    self.run_forever()
  File "D:\Program Files\Python310\lib\asyncio\windows_events.py", line 321, in run_forever
    super().run_forever()
  File "D:\Program Files\Python310\lib\asyncio\base_events.py", line 600, in run_forever
    self._run_once()
  File "D:\Program Files\Python310\lib\asyncio\base_events.py", line 1896, in _run_once
    handle._run()
  File "D:\Program Files\Python310\lib\asyncio\events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "D:\code\bot\nonebot\Hao_Tian_Bot\.venv\lib\site-packages\nonebot\message.py", line 141, in _check_matcher
    await _run_matcher(Matcher, bot, event, state, stack, dependency_cache)
  File "D:\code\bot\nonebot\Hao_Tian_Bot\.venv\lib\site-packages\nonebot\message.py", line 187, in _run_matcher
    await matcher.run(bot, event, state, stack, dependency_cache)
  File "D:\code\bot\nonebot\Hao_Tian_Bot\.venv\lib\site-packages\nonebot\internal\matcher\matcher.py", line 753, in run
    await self.simple_run(bot, event, state, stack, dependency_cache)
  File "D:\code\bot\nonebot\Hao_Tian_Bot\.venv\lib\site-packages\nonebot\internal\matcher\matcher.py", line 728, in simple_run
    await handler(
  File "D:\code\bot\nonebot\Hao_Tian_Bot\.venv\lib\site-packages\nonebot\dependencies\__init__.py", line 108, in __call__
    return await cast(Callable[..., Awaitable[R]], self.call)(**values)
  File "D:\code\bot\nonebot\Hao_Tian_Bot\.venv\lib\site-packages\nonebot_plugin_bilichat\__init__.py", line 140, in video_info_v11
    if summary := await summarization(cache=cache, cid=str(info["cid"])):
  File "D:\code\bot\nonebot\Hao_Tian_Bot\.venv\lib\site-packages\nonebot_plugin_bilichat\summary\__init__.py", line 21, in summarization
    summary, newbing_meaning = await newbing_summarization(cache, cid)
> File "D:\code\bot\nonebot\Hao_Tian_Bot\.venv\lib\site-packages\nonebot_plugin_bilichat\summary\newbing_summarise.py", line 96, in newbing_summarization
    ai_summary = await newbing_req(get_small_size_transcripts(cache.title, cache.episodes[cid].content))
  File "D:\code\bot\nonebot\Hao_Tian_Bot\.venv\lib\site-packages\nonebot_plugin_bilichat\summary\newbing_summarise.py", line 76, in newbing_req
    ans = await bot.ask(
  File "D:\code\bot\nonebot\Hao_Tian_Bot\.venv\lib\site-packages\EdgeGPT.py", line 376, in ask
    async for final, response in self.chat_hub.ask_stream(
  File "D:\code\bot\nonebot\Hao_Tian_Bot\.venv\lib\site-packages\EdgeGPT.py", line 310, in ask_stream
    objects = str(await self.wss.recv()).split(DELIMITER)
  File "D:\code\bot\nonebot\Hao_Tian_Bot\.venv\lib\site-packages\websockets\legacy\protocol.py", line 568, in recv
    await self.ensure_open()
  File "D:\code\bot\nonebot\Hao_Tian_Bot\.venv\lib\site-packages\websockets\legacy\protocol.py", line 944, in ensure_open
    raise self.connection_closed_exc()
websockets.exceptions.ConnectionClosedOK: received 1000 (OK); then sent 1000 (OK)

另外我没太理解那个cookies到底要放在哪里,因此每个子目录应该都放了一个,配置里面也写了http代理

Feature: WebUI 开发与完善

希望能解决的问题

在 bilichat 的 v5 版本中计划添加 WebUI 以实现更加直观、便捷、简易的使用体验。

但由于个人技术不足,很难独自完成WebUI的前端部分开发。因此,我在此恳请社区的开发者们加入这一努力,帮助我们完成这个重要的里程碑。

如果你对前端开发有经验,或者对该项目感兴趣并愿意贡献一己之力,请不要犹豫,你的帮助将对项目产生深远的影响。

描述所需要的功能

页面设计

目前,WebUI需要包含三个主要页面:

主页:

主页应当对插件的各个子功能进行有效的引导,提供直观的用户界面。

如果设计允许,也可将其他子功能直接整合到主页中。

Bilibili Cookies 更新:

此部分已有通过 ChatGPT4 编写的初步实现,已经可以投入使用,可以进一步的优化。

此页面提供了直接将 bilibili 的 Cookies 直接上传至服务器的功能,也可以生成一个油猴脚本,在用户访问 bilibili 时自动将 cookies 上传至服务器

订阅配置项更新:

这个页面的目的是为了让用户能够直观地管理每个用户(包括群组和频道)的订阅信息,以及订阅部分的整体配置信息。

  1. 配置更新应通过GET方法从API获取当前配置项(JSON格式),然后显示在代码块中,或允许用户手动粘贴配置至代码块。
  2. 需要基于配置项内容渲染可视化的配置项解释和修改功能。
  3. 配置保存后,应使用PUT方法上传至相同的API。如果上传成功,服务器将返回修改后的配置文件;如果失败,状态值可能为400或422,并附带失败原因。
  4. 代码块和可视化部分应保持双向同步,任何一方的改动都应反映在另一方。
  5. 配置文件中 uploader 在前端中无需展示,但前端在展示订阅时可以从中获取对应UP主的信息(如昵称)。

其他信息

  1. API 的文件位于 nonebot_plugin_bilichat/api/,挂载在 /{path}/api/ 下,在 WebUI 启动时会在日志中输出在本机中的访问地址 http://{ip}:{port}/{path}/api/,例如 http://127.0.0.1:8080/bilichat/api/
  2. WebUI 不挂载在 nonebot app 下,可采用 nginx 或其他静态托管服务进行单独部署,类似 Clash 管理面板 的方式工作,即在用户使用前询问用户的后端地址。
  3. 订阅配置项由于可能会在之后的更新中进行修改,请务必在前端页面中保留一定的拓展性。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.