Giter VIP home page Giter VIP logo

nonebot-plugin-bawiki's Introduction

BAWiki

NoneBot-Plugin-BAWiki

✨ 基于 NoneBot2 的碧蓝档案 Wiki 插件 ✨

python pdm-managed wakatime
Pydantic Version 1 Or 2 license pypi pypi download

💬 前言

诚邀各位帮忙更新插件数据源仓库!能帮这个小小插件贡献微薄之力,鄙人感激不尽!!
点击跳转 bawiki-data 查看详细贡献说明

Tip

📖 介绍

一个碧蓝档案的 Wiki 插件,主要数据来源为 GameKeeSchaleDB
插件灵感来源:ba_calender

💿 安装

以下提到的方法 任选其一 即可

[推荐] 使用 nb-cli 安装 在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装
nb plugin install nonebot-plugin-bawiki
使用包管理器安装 在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令
pip
pip install nonebot-plugin-bawiki
pdm
pdm add nonebot-plugin-bawiki
poetry
poetry add nonebot-plugin-bawiki
conda
conda install nonebot-plugin-bawiki

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

[tool.nonebot]
plugins = [
    # ...
    "nonebot_plugin_bawiki"
]

⚙️ 配置

在 nonebot2 项目的 .env 文件中添加下表中的配置

配置项 必填 默认值 说明
BA_PROXY None 访问各种数据源时使用的代理
BA_GACHA_COOL_DOWN 0 每群每人的抽卡冷却,单位秒
BA_VOICE_USE_CARD False 是否使用自定义音乐卡片发送角色语音
BA_USE_FORWARD_MSG True 是否使用合并转发发送部分消息
BA_SCREENSHOT_TIMEOUT 60 网页截图超时,单位秒
BA_DISABLE_CLASSIC_GACHA False 抽卡次数 10 次以下时是否不使用经典抽卡样式
BA_GACHA_MAX 200 单次抽卡最大次数
BA_ILLEGAL_LIMIT 3 用户在长对话中非法操作多少次后直接结束对话,填 0 以禁用此功能
BA_ARONA_SET_ALIAS_ONLY_SU False 是否只有超级用户才能修改 arona 指令所用的别名
BA_GAMEKEE_URL ... GameKee 数据源的地址
BA_SCHALE_URL ... SchaleDB Json 数据源的地址
BA_BAWIKI_DB_URL ... bawiki-data 的地址
BA_ARONA_API_URL ... Arona Bot 数据源的地址
BA_ARONA_CDN_URL ... Arona Bot 图片 CDN 地址
BA_SHITTIM_API_URL ... 什亭之匣 API 地址
BA_SHITTIM_URL ... 什亭之匣网址
BA_SHITTIM_DATA_URL ... 什亭之匣数据地址
BA_SHITTIM_KEY None 什亭之匣 API Key(获取途径 看这里
BA_SHITTIM_REQUEST_DELAY 0 请求什亭之匣 API 后的等待时间,用于测试时限制 QPS
BA_REQ_RETRY 1 每次请求的重试次数
当值为 1 时,总共会请求两次(请求一次,重试一次),以此类推
BA_REQ_CACHE_TTL 10800 请求缓存的过期时间,单位秒
BA_SHITTIM_REQ_CACHE_TTL 600 什亭之匣相关请求缓存的过期时间,单位秒
BA_REQ_TIMEOUT 10.0 请求超时,单位秒,为 None 表示永不超时
BA_AUTO_CLEAR_CACHE_PATH False 是否在插件每次加载时自动清理缓存文件夹

🎉 使用

指令表

兼容 nonebot-plugin-PicMenu

现在 BAWiki 会自动帮你把 PicMenu 的字体设为系统已安装的字体,再也不需要麻烦的手动配置了,好耶~

如果你不想用 PicMenu 的话,那么使用 ba帮助 指令即可;
如果装载了 PicMenu,ba帮助 指令会调用 PicMenu 来生成帮助图片并发送

📞 联系

QQ:3076823485
Telegram:@lgc2333
吹水群:1105946125
邮箱:[email protected]

💡 鸣谢

  • 插件数据源提供
  • 蔚蓝档案标题生成器

bawiki-data 数据源贡献列表

💰 赞助

赞助我

感谢大家的赞助!你们的赞助将是我继续创作的动力!

📝 更新日志

0.11.3

  • 修复中文括号转换错误的问题

0.11.2

  • 小重构小修复

0.11.1

  • 修复 ba档线 指令的问题 (#56)

0.11.0

  • 适配 Pydantic V2 (#55)

0.10.4 & 0.10.5

  • 修复 ba爱丽丝的伙伴ba小心卷狗 显示的赛季标题错误问题

0.10.3

  • 删除指令 ba总力排名
  • 其他小更改

0.10.2

  • ba小心卷狗ba爱丽丝的伙伴 指令图添加难度显示
  • 修改帮助文案,新增指令别名 ba总力档线 -> ba档线ba总力排名 -> ba排名

0.10.1

  • 修复 ba总力档线 指令返回图片中更新时间显示时区错误的问题
  • 新增配置项 BA_ILLEGAL_LIMITBA_ARONA_SET_ALIAS_ONLY_SUBA_SHITTIM_REQ_CACHE_TTL

0.10.0

  • 新增 什亭之匣 相关内容
  • 为 Arona 指令添加了添加、删除别名功能
  • 前瞻图默认列表个数改为 3
  • ba语音ba漫画 指令加上了列表选择
  • ba学生wiki 指令现在不显示学生语音列表了
  • 修改了 SchaleDB 的学生生日展示样式
  • 内置帮助指令以图片方式展示结果
  • 更新主线攻略查询地址
  • 配置项更改:
    • 添加 BA_USE_FORWARD_MSG
    • 添加 BA_REQ_RETRY
    • 添加 BA_REQ_CACHE_TTL
    • 添加 BA_REQ_TIMEOUT
    • 添加 BA_SHITTIM_URL
    • 添加 BA_SHITTIM_API_URL
    • 添加 BA_SHITTIM_DATA_URL
    • 添加 BA_SHITTIM_KEY
    • 添加 BA_SHITTIM_REQUEST_DELAY
    • 删除 BA_CLEAR_REQ_CACHE_INTERVAL
    • 重命名 BA_AUTO_CLEAR_ARONA_CACHE -> BA_AUTO_CLEAR_CACHE_PATH
  • 其他代码重构,Bug 修复 ,新增了一些 Bug(可能)
未来将更新(点击展开)

1.0.0

  • 使用 nonebot-plugin-alconna 实现多适配器支持
  • 使用 playwright 重构现有的 Pillow 绘图
历史更新日志(点击展开)

0.9.7

  • 修复 balogo 的 fallback 字体的字重问题

0.9.6

  • 新增指令 balogo

0.9.5

  • 修复由于 SchaleDB 数据结构变动导致的一些 Bug
  • 抽卡总结图现在有半透明和圆角了

0.9.4

  • 修复了三星爆率过高的 bug (#47)

0.9.3

  • 微调 ba日程表 指令:GameKee 源的日程表现在可以分服务器展示了,顺便修复了 SchaleDB 源日程的 Bug,详见指令帮助
  • 现在在抽卡次数为 10 次以下时,默认使用经典抽卡样式(旧版的还原游戏的抽卡样式)
  • 配置项变更:
    • 添加 BA_DISABLE_CLASSIC_GACHA

0.9.2

  • ba切换卡池 指令现在不带参数时会显示所有卡池以供切换了

0.9.1

  • 重构抽卡绘图部分、数据源没有池子数据时自动使用常驻池
  • 将阿罗娜的回复变得更二次元了
  • 配置项变更:
    • 添加 BA_GACHA_MAX

0.9.0

  • 更新了 SchaleDB 页面的截图处理方式,现在可以支持源站与任何镜像了
  • 添加国服前瞻获取,详见指令 ba千里眼 帮助
  • 由于 CDN 域名过期,修改了默认源到原源
  • 尝试修复 #43#46
  • 配置项变更:
    • 删除 BA_SCHALE_MIRROR_URL
    • 添加 BA_SCREENSHOT_TIMEOUT

0.8.6

0.8.5

  • 修复 #41
  • 配置项 BA_AUTO_CLEAR_ARONA_CACHE 默认值改为 False

0.8.4

  • 现在会对 GameKee 的日程表分页了
  • ba羁绊 指令带图发送失败时会提醒用户
  • 修复 ba学生wiki 截图失败的 bug,同时优化截图样式
  • 漫画获取不再依赖 bawiki-data 数据源,现在直接从 GameKee 现爬;加入了搜索漫画功能,并且图片过多会使用合并转发的方式发送

0.8.3

  • 修改缓存路径

0.8.2

  • 修改了 ba语音 指令的特性,兼容了有中配语音的学生,请查看该指令帮助获取详细信息
  • 删除了 arona 指令模糊搜索展示类别的功能,因为模糊搜索时 type 固定为 0

0.8.1

  • 使用 arona 指令模糊搜索的时候会显示图片类别了

0.8.0

  • 整理项目结构
  • 添加内置帮助指令 ba帮助
  • 添加 Arona Bot 数据源指令 arona
  • 添加了配置项 BA_ARONA_API_URLBA_ARONA_CDN_URLBA_CLEAR_REQ_CACHE_INTERVALBA_AUTO_CLEAR_ARONA_CACHE
  • 其他小更改(更换 aiohttphttpx 等)

0.7.10

  • 添加指令 ba关卡

0.7.9

  • 添加配置项 BA_VOICE_USE_CARD

0.7.8

  • 🎉 NoneBot 2.0 🚀

0.7.7

  • 修复 bug

0.7.6

  • 修复卡池为空不会提示的 bug

0.7.5

  • 插件可以自动帮你配置 PicMenu 的字体了
  • 给抽卡新增了冷却

0.7.2 ~ 0.7.4

  • 修复 bug

0.7.1

  • 更改配置项名称

0.7.0

  • 修复 SchaleDB 源日程表出错的问题
  • 添加了几个配置项,现在可以在 .env 文件中修改数据源链接了
  • 修改了默认数据源链接
    • 买了七牛云的 CDN,设置的数据缓存 12 小时。不知道现在速度怎么样…… 希望不要有人故意搞我……
      感谢大佬借用的已备案域名 cyberczy.xyz
  • 其他小更改

0.6.4

  • 修复由于 imageutils 接口改动造成的绘图失败的 bug

0.6.3

  • 使用 require 加载依赖插件

0.6.2

  • 修改日程表、羁绊查询的图片背景
  • 加上日程表条目的圆角
  • 更改 GameKee 日程表的排序方式

0.6.1

  • 修复一处 Py 3.8 无法运行的代码

0.6.0

  • 新指令 ba抽卡 ba切换卡池 ba表情 ba漫画
  • 更改 SchaleDB 日程表触发单国际服的指令判断(由包含国际服改为包含

0.5.2

  • 新指令ba语音
  • 修复ba综合战术考试的一些问题

0.5.1

  • 新指令ba互动家具
  • ba国际服千里眼指令的日期参数如果小于当前日期则会将日期向前推一年
  • ba日程表的 SchaleDB 源如果没获取到数据则不会绘画那一部分
  • ba国际服千里眼日期匹配 bug 修复

0.5.0

  • 新数据源 bawiki-data
  • 新指令ba角评ba总力战ba活动ba综合战术考试ba制造ba国际服千里眼ba清空缓存
  • bal2d指令改为ba羁绊别名
  • ba日程表指令从网页截图改为 Pillow 画图;并修改了指令的参数解析方式
  • 更改了ba羁绊指令的画图方式及底图
  • 更改学生别名的匹配方式
  • 学生别名等常量现在从 bawiki-data 在线获取
  • 新增请求接口的缓存机制,每 3 小时清空一次缓存
  • 新增PROXY配置项
  • 更改三级菜单排版

0.4.2

  • ba羁绊 baL2D 的 L2D 预览图改为实时从 GameKee 抓取

0.4.1

  • 优化带括号学生名称的别名匹配

0.4.0

  • ba日程表SchaleDB数据源
  • ba学生图鉴 ba羁绊 数据源更换为SchaleDB
  • ba学生图鉴修改为ba学生wiki

0.3.0

  • 新指令 baL2D
  • 新指令 ba羁绊

0.2.2

  • 添加学生别名判断
  • 修改日程表图片宽度

0.2.1

  • 修改页面加载等待的事件,可能修复截图失败的问题

0.2.0

0.1.1

  • 日程表改为以图片形式发送
  • 日程表不会显示未开始的活动了
  • 小 bug 修复
  • 移除了 herobrine

nonebot-plugin-bawiki's People

Contributors

benx1n avatar falfachino avatar haoyun0 avatar he0119 avatar lgc2333 avatar xiexilin2 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

Watchers

 avatar  avatar

nonebot-plugin-bawiki's Issues

提几个小建议吧

1.日程表希望能做出国际服和日服的区分
2.学生查询希望能做出常用外号的查询,比如大叔和水大叔、春月、fes这种的
3.个人参考了其他的几个BA机器人,要是能添加以下功能就更好了:羁绊等级(查询角色多少级羁绊解锁live2D,可以图片输出)、千里眼(看卡池)

希望作者大大加油,很不错的插件呢!

ba语音不清晰

ba语音发出来听着不清晰,像是在电话里说的一样,就是音质有点差,和gamekee上的不一样

更新国际服千里眼all的图源

指令“千里眼 all”所使用的图源过于老旧,建议使用以下图源。并设置成每次使用指令时自动检查是否有更新。谢谢佬
image

菜单无法显示该插件

理论上nonebot-plugin-bawiki是已经写好了picmenu的,所以能正常使用就能触发picmenu
但是尝试菜单时找不到该插件
image
尝试菜单 BAWiki时控制台报错(BAWiki是这个插件在它的init.py里设置的插件名)
WE$0L_}TIDE3R8T J{35WD9
最后尝试从json文件添加菜单,直接使用了参考的格式
image
这是添加文件的位置,menu_config/menus文件夹是安装插件后自动生成的,所以应该不存在说放置错误。
image
之所以说那么多,那自然是也报错了。当我尝试菜单时依旧看不到配置的文件
image
以下是我看到的完整日志(从bot启动开始)
GR6JBD6@MVZP7LZFIN))WCK

我的nonebot是由云崽botpy插件内置的,安装nonebot插件使用的是时雨的云崽脚本。云崽所处环境应该是MTArch
bash <(curl -L gitee.com/TimeRainStarSky/TRSS_Yunzai/raw/main/Install.sh)
俩个nonebot插件的安装过程如下
image

如果还有别的解决问题需要的内容的话请指导我提供 谢谢
因为正常写json也无法触发预期的反应,所以我在隔壁PicMenu提交了一样的issue

功能经常报错有时又能用

Traceback (most recent call last):
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/anyio/_core/_sockets.py", line 164, in try_connect
    stream = await asynclib.connect_tcp(remote_host, remote_port, local_address)
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/anyio/_backends/_asyncio.py", line 1691, in connect_tcp
    await get_running_loop().create_connection(
  File "uvloop/loop.pyx", line 2039, in create_connection
    raise exceptions[0]
  File "uvloop/loop.pyx", line 2016, in uvloop.loop.Loop.create_connection
    await waiter
ConnectionRefusedError: [Errno 111] Connection refused

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

Traceback (most recent call last):
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpcore/_exceptions.py", line 10, in map_exceptions
    yield
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpcore/backends/asyncio.py", line 111, in connect_tcp
    stream: anyio.abc.ByteStream = await anyio.connect_tcp(
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/anyio/_core/_sockets.py", line 222, in connect_tcp
    raise OSError("All connection attempts failed") from cause
OSError: All connection attempts failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpx/_transports/default.py", line 60, in map_httpcore_exceptions
    yield
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpx/_transports/default.py", line 353, in handle_async_request
    resp = await self._pool.handle_async_request(req)
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpcore/_async/connection_pool.py", line 253, in handle_async_request
    raise exc
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpcore/_async/connection_pool.py", line 237, in handle_async_request
    response = await connection.handle_async_request(request)
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpcore/_async/http_proxy.py", line 261, in handle_async_request
    connect_response = await self._connection.handle_async_request(
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpcore/_async/connection.py", line 86, in handle_async_request
    raise exc
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpcore/_async/connection.py", line 63, in handle_async_request
    stream = await self._connect(request)
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpcore/_async/connection.py", line 111, in _connect
    stream = await self._network_backend.connect_tcp(**kwargs)
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpcore/backends/auto.py", line 29, in connect_tcp
    return await self._backend.connect_tcp(
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpcore/backends/asyncio.py", line 111, in connect_tcp
    stream: anyio.abc.ByteStream = await anyio.connect_tcp(
  File "/usr/lib/python3.9/contextlib.py", line 137, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions
    raise to_exc(exc)
httpcore.ConnectError: All connection attempts failed

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

Traceback (most recent call last):
  File "/home/my/bot/zhenxun_bot/bot.py", line 22, in <module>
    nonebot.run()
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/nonebot/__init__.py", line 273, in run
    get_driver().run(*args, **kwargs)
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/nonebot/drivers/fastapi.py", line 172, in run
    uvicorn.run(
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/uvicorn/main.py", line 578, in run
    server.run()
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/uvicorn/server.py", line 61, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "/usr/lib/python3.9/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/nonebot/message.py", line 142, in _check_matcher
    await _run_matcher(Matcher, bot, event, state, stack, dependency_cache)
> File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/nonebot/message.py", line 188, in _run_matcher
    await matcher.run(bot, event, state, stack, dependency_cache)
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/nonebot/internal/matcher/matcher.py", line 727, in run
    await self.simple_run(bot, event, state, stack, dependency_cache)
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/nonebot/internal/matcher/matcher.py", line 702, in simple_run
    await handler(
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/nonebot/dependencies/__init__.py", line 108, in __call__
    return await cast(Callable[..., Awaitable[R]], self.call)(**values)
  File "/home/my/bot/zhenxun_bot/extensive_plugin/nonebot_plugin_bawiki/command/global_future.py", line 56, in _
    await matcher.finish(await db_global_future(all_img=True))
  File "/home/my/bot/zhenxun_bot/extensive_plugin/nonebot_plugin_bawiki/data/bawiki.py", line 163, in db_global_future
    data = (await db_get_wiki_data())["global_future"]
  File "/home/my/bot/zhenxun_bot/extensive_plugin/nonebot_plugin_bawiki/data/bawiki.py", line 28, in db_get_wiki_data
    return await db_get("data/wiki.json")
  File "/home/my/bot/zhenxun_bot/extensive_plugin/nonebot_plugin_bawiki/data/bawiki.py", line 24, in db_get
    return await async_req(f"{config.ba_bawiki_db_url}{suffix}", raw=raw)  # type: ignore
  File "/home/my/bot/zhenxun_bot/extensive_plugin/nonebot_plugin_bawiki/util.py", line 131, in async_req
    resp = await cli.request(method, url, params=params, **kwargs)
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpx/_client.py", line 1533, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpx/_client.py", line 1620, in send
    response = await self._send_handling_auth(
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpx/_client.py", line 1648, in _send_handling_auth
    response = await self._send_handling_redirects(
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpx/_client.py", line 1685, in _send_handling_redirects
    response = await self._send_single_request(request)
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpx/_client.py", line 1722, in _send_single_request
    response = await transport.handle_async_request(request)
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpx/_transports/default.py", line 353, in handle_async_request
    resp = await self._pool.handle_async_request(req)
  File "/usr/lib/python3.9/contextlib.py", line 137, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/root/.cache/pypoetry/virtualenvs/zhenxun-bot-XNwg48JX-py3.9/lib/python3.9/site-packages/httpx/_transports/default.py", line 77, in map_httpcore_exceptions
    raise mapped_exc(message) from exc
httpx.ConnectError: All connection attempts failed

在使用千里眼和查漫画等功能经常出现这样的报错,我想问一下这里是网络问题导致还是什么

已解决:从SchaleDB返回的截图内容不为中文

问题:

现有代码下
SchaleDB返回的截图(似乎)会因为服务器IP归属地而返回非中文内容
那总不能再往国内挂个代理吧...

image

个人解决方案:

schaledb.py顶部添加
import pyppeteer

在异步函数async def schale_get_stu_info(stu)内添加

await page.click("#ba-navbar-regionselector")
await page.click("#ba-navbar-languageselector")
await page.click("#ba-navbar-languageselector-cn")
await page.click("#ba-navbar-regionselector")

image

三个标签id分别对应
regionselector 设置按钮
languageselector 设置语言
languageselector-cn 选择中文

二次点击设置使其缩回

效果:

image

缺点:

pip install pyppeteer

其实就这也不算啥特别大的缺点
问题是我昨天弄的时候装完这个之后
其他的插件会抛出No module named 'pyee.asyncio'的错误
还需要补上一个

pip install playwright

可能问题因机器而异吧
就怕整的不稳定了

对nonebot_plugin_htmlrender不是很了解
如果里面有更好的模拟点击方案,可以替换pyppeteer库

或者有其他能保证返回中文的方法?

关于BA_VOICE_USE_CARD

设置BA_VOICE_USE_CARD=True之后,在QQ发送语音指令,机器人就会没有任何报错直接关机,有什么头绪吗

中文出现乱码

1275259539-2573059985-BA0B0D4BD69F4D410685FB0992BED12E
系统:CentOS 8
环境:美国IP属地,服务器
原因:系默认字体文件无中文

代码中是否有位置能够手动指定字体文件?

nonebot客户端与插件依赖包版本冲突

nb-cli安装插件时报错

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
pyinquirer 1.0.3 requires prompt_toolkit==1.0.14, but you have prompt-toolkit 3.0.31 which is incompatible.

尝试pip install prompt_toolkit==1.0.14后报错

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
pyinquirer 1.0.3 requires prompt_toolkit==1.0.14, but you have prompt-toolkit 3.0.31 which is incompatible.

使用角评功能的时候学生的别名无效

比如指令是 ba角评 体香,或者体操服优香,或者运动服优香,等等
返回结果是 没有找到该角色的角评,可能是学生名称错误或者插件还未收录该角色角评
但是指令是 ba羁绊 体香;或者ba学生图鉴 体香等其他功能
则可以正常返回体操服优香cg图鉴等等。
ba角评 没包人,或者ba角评 优香也可以正常返回普通优香角评。

不知为何只有花绘的角评出不来

如题,由于没有任何报错以及消息,无法提供除了聊天截图外的其他参考。如果开发者自己无法复现该问题那可能只能放弃排查了。
注:其他角色都可以正常返回,圣诞花绘都可以正常得到结果,只有花绘本人不行
bug

Socks5代理支持?

这个插件和另一个搜图插件共用了一个PROXY变量,我也确认我安装了aiohttp_socks,但是这两个插件好像都会在使用socks5代理时出错...
image
image
同样的代理在Pixivbot中倒是运行正常的。

关于功能的建议(关卡攻略查询)

发送关卡名之后,自动在gamekee截图对应图文攻略并返回。
例如:
发送“攻略1-2”,则返回关卡1-2的图文攻略截图。
发送“攻略5-1”,则返回关卡5-1的图文攻略截图。
发送“攻略H6-1”,则返回关卡H6-1的图文攻略截图。
发送“攻略H13-3”,则返回关卡H13-3的图文攻略截图。

bal2d名称匹配问题

我这里使用ba羁绊直接查询学生名称或者昵称基本都没有问题,但是查询学生的部分着装比方说泳装使用之前0.8几的版本时当时可以用的,现在更新0.11.2之后会显示无法找到学生
水若藻,水忍忍,温泉斯大萝什么的这种之前都是可以用的,我看了下代码大概是这块好像会有一个文件?
schaledb.py

async def schale_get_stu_data(loc: str = "cn") -> List[Dict[str, Any]]:
    return await schale_get(f"data/{loc}/students.min.json")

大概是这里有个json文件来获取学生名称?
我翻遍了我的目录没有找到这个json,我想看下这种特殊着装学生名称到底是怎么样的我该怎么搜索
实在找不到只能球大佬帮助

绘制日程表图片出错

R@W9F5I1U~KDABR9A{1 I1K
情况复现:在某个QQ群输入ba日程表,期望结果应该是正常打印图片,实际上会输出绘制日程表图片出错,请检查后台输出,和issue#16 貌似是不同的错误
#16

日程表图片高度错误

 if ev_pic:

        img.paste(ev_pic.resize_width(1290).circle_corner(15), (60, ii), alpha=True)
        ii += ev_pic.height + 25

gamekee.py
game_kee_get_calender_page的draw函数中,
ev_pic的height获取的是原图高度,与resize_width之后的高度不一致,导致图片截断

balogo错误信息太长

使用balogo时若发生错误,所有错误信息(包括历史错误)都会被bot回复给用户
image

截取角色Wiki页面出错

08-04 11:22:49 [ERROR] nonebot_plugin_bawiki | 截取wiki页面出错 https://ba.gamekee.com/581679.html
Traceback (most recent call last):
File "", line 15, in
File "C:\Users\Administrator\Desktop\nb\arona.venv\lib\site-packages\nonebot_init_.py", line 333, in run
get_driver().run(*args, **kwargs)
File "C:\Users\Administrator\Desktop\nb\arona.venv\lib\site-packages\nonebot\drivers\fastapi.py", line 199, in run
uvicorn.run(
File "C:\Users\Administrator\Desktop\nb\arona.venv\lib\site-packages\uvicorn\main.py", line 587, in run
server.run()
File "C:\Users\Administrator\Desktop\nb\arona.venv\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\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 636, in run_until_complete
self.run_forever()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\windows_events.py", line 321, in run_forever
super().run_forever()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 603, in run_forever
self._run_once()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 1909, 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\nb\arona.venv\lib\site-packages\nonebot\message.py", line 467, in check_and_run_matcher
await _run_matcher(
File "C:\Users\Administrator\Desktop\nb\arona.venv\lib\site-packages\nonebot\message.py", line 419, in run_matcher
await matcher.run(bot, event, state, stack, dependency_cache)
File "C:\Users\Administrator\Desktop\nb\arona.venv\lib\site-packages\nonebot\internal\matcher\matcher.py", line 759, in run
await self.simple_run(bot, event, state, stack, dependency_cache)
File "C:\Users\Administrator\Desktop\nb\arona.venv\lib\site-packages\nonebot\internal\matcher\matcher.py", line 734, in simple_run
await handler(
File "C:\Users\Administrator\Desktop\nb\arona.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\nb\arona.venv\lib\site-packages\nonebot_plugin_bawiki\command\stu_wiki_gamekee.py", line 53, in _
await send_wiki_page(sid, matcher)

File "C:\Users\Administrator\Desktop\nb\arona.venv\lib\site-packages\nonebot_plugin_bawiki\data\gamekee.py", line 110, in send_wiki_page
img = await game_kee_get_page(url)
File "C:\Users\Administrator\Desktop\nb\arona.venv\lib\site-packages\nonebot_plugin_bawiki\data\gamekee.py", line 97, in game_kee_get_page
await page.eval_on_selector(".wiki-footer", js_str)
File "C:\Users\Administrator\Desktop\nb\arona.venv\lib\site-packages\playwright\async_api_generated.py", line 8786, in eval_on_selector
await self._impl_obj.eval_on_selector(
File "C:\Users\Administrator\Desktop\nb\arona.venv\lib\site-packages\playwright_impl_page.py", line 409, in eval_on_selector
return await self._main_frame.eval_on_selector(
File "C:\Users\Administrator\Desktop\nb\arona.venv\lib\site-packages\playwright_impl_frame.py", line 384, in eval_on_selector
await self._channel.send(
File "C:\Users\Administrator\Desktop\nb\arona.venv\lib\site-packages\playwright_impl_connection.py", line 61, in send
return await self._connection.wrap_api_call(
File "C:\Users\Administrator\Desktop\nb\arona.venv\lib\site-packages\playwright_impl_connection.py", line 482, in wrap_api_call
return await cb()
File "C:\Users\Administrator\Desktop\nb\arona.venv\lib\site-packages\playwright_impl_connection.py", line 97, in inner_send
result = next(iter(done)).result()
playwright._impl._api_types.Error: Error: failed to find element matching selector ".wiki-footer"

ToDo

  • 新图片消息UI PIL画图
  • 根据可互动家具名/喜爱的礼物名反查角色
  • 学生面板
    • 提供各种加成下的预估面板计算
  • 自动更新学生别名等常量(托管到另一个仓库)
  • 数据源更换为SchaleDB
  • 国际服、日服日程表
  • 学生资料
    • 学生介绍、基本属性、饰品、技能介绍、专武介绍、适应性、解锁l2d等级、喜欢的礼物、互动家具

关于ba抽卡这个指令的问题

发送这个指令就会报错
以下是具体的报错:
[PyBot][06:48:49.924][INFO] [message] 触发 Matcher(type='message', module=no
nebot_plugin_bawiki.main)
[PyBot][06:48:49.924][ERROR] [message]Running Matcher(type='message', module
=nonebot_plugin_bawiki.main) failed.
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\bot\Miao-Yunzai\Miao-Yunzai\plugins\p
y-plugin\main.py", line 17, in
yunzai_nonebot.run()
File "C:\Users\Administrator\Desktop\bot\Miao-Yunzai\Miao-Yunzai\plugins\p
y-plugin\yunzai_nonebot_init_.py", line 31, in run
nonebot.run(*args, **kwargs)
File "C:\Users\Administrator\AppData\Local\pypoetry\Cache\virtualenvs\py-p
lugin-pC71-ir1-py3.10\lib\site-packages\nonebot_init_.py", line 273, in r
un
get_driver().run(*args, **kwargs)
File "C:\Users\Administrator\Desktop\bot\Miao-Yunzai\Miao-Yunzai\plugins\p
y-plugin\yunzai_nonebot\hijack\driver.py", line 42, in run
loop.run_until_complete(self.serve())
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\a
syncio\base_events.py", line 636, in run_until_complete
self.run_forever()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\a
syncio\windows_events.py", line 321, in run_forever
super().run_forever()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\a
syncio\base_events.py", line 603, in run_forever
self._run_once()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\a
syncio\base_events.py", line 1909, in _run_once
handle._run()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\a
syncio\events.py", line 80, in _run
self._context.run(self._callback, *self._args)
File "C:\Users\Administrator\Desktop\bot\Miao-Yunzai\Miao-Yunzai\plugins\p
y-plugin\yunzai_nonebot\hijack\message.py", line 10, in wrapper
return await func(*args, **kwargs)
File "C:\Users\Administrator\AppData\Local\pypoetry\Cache\virtualenvs\py-p
lugin-pC71-ir1-py3.10\lib\site-packages\nonebot\message.py", line 141, in _c
heck_matcher
await _run_matcher(Matcher, bot, event, state, stack, dependency_cache)

File "C:\Users\Administrator\AppData\Local\pypoetry\Cache\virtualenvs\py-p
lugin-pC71-ir1-py3.10\lib\site-packages\nonebot\message.py", line 187, in r
un_matcher
await matcher.run(bot, event, state, stack, dependency_cache)
File "C:\Users\Administrator\AppData\Local\pypoetry\Cache\virtualenvs\py-p
lugin-pC71-ir1-py3.10\lib\site-packages\nonebot\internal\matcher\matcher.py"
, line 732, in run
await self.simple_run(bot, event, state, stack, dependency_cache)
File "C:\Users\Administrator\AppData\Local\pypoetry\Cache\virtualenvs\py-p
lugin-pC71-ir1-py3.10\lib\site-packages\nonebot\internal\matcher\matcher.py"
, line 707, in simple_run
await handler(
File "C:\Users\Administrator\AppData\Local\pypoetry\Cache\virtualenvs\py-p
lugin-pC71-ir1-py3.10\lib\site-packages\nonebot\dependencies_init
.py", l
ine 108, in call
return await cast(Callable[..., Awaitable[R]], self.call)(**values)
File "C:\Users\Administrator\AppData\Local\pypoetry\Cache\virtualenvs\py-p
lugin-pC71-ir1-py3.10\lib\site-packages\nonebot_plugin_bawiki_main_.py",
line 673, in _
pool_obj = gacha_pool_index.get(qq := event.get_user_id()) or get_1st_po
ol(
File "C:\Users\Administrator\AppData\Local\pypoetry\Cache\virtualenvs\py-p
lugin-pC71-ir1-py3.10\lib\site-packages\nonebot_plugin_bawiki_main_.py",
line 583, in get_1st_pool
pool = pool_data[0]
IndexError: list index out of range
请问大大这是什么问题呢?

ba羁绊有反应,但是不出图

GI1)K47SQY$~`V_{R)P1HE
如图,这是尝试重启后bot后的,重启前提示“l2d被风控,可能是因为太涩”以下是报错,第二张为重启前有文字但无图的报错
HHSUOION$UQ$%U W 9@$AWS

K@V57TEX~ B{~1UC3E 84XS
插件版本为0.8.4,今天才发现之前竟然一直是0.7.7(

新学生wiki词条停止了

你好,用ba新学生指令,截下来的图显示,wiki那边有新的“当期UP”词条,原新学生词条停止维护了。
请问有其他办法能查看新的学生嘛
image

查询报错Cannot connect to host bawiki.lgc2333.top:443

[04-10 01:41:31 [ERROR] nonebot | Running Matcher(type='message', module=nonebot_plugin_bawiki.main) failed.
Traceback (most recent call last):
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\aiohttp\connector.py", line 980, in _wrap_create_connection
return await self._loop.create_connection(*args, **kwargs) # type: ignore[return-value] # noqa
File "C:\Users\QC\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py", line 1050, in create_connection
transport, protocol = await self._create_connection_transport(
File "C:\Users\QC\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py", line 1080, in _create_connection_transport
await waiter
File "C:\Users\QC\AppData\Local\Programs\Python\Python38\lib\asyncio\sslproto.py", line 529, in data_received
ssldata, appdata = self._sslpipe.feed_ssldata(data)
File "C:\Users\QC\AppData\Local\Programs\Python\Python38\lib\asyncio\sslproto.py", line 189, in feed_ssldata
self._sslobj.do_handshake()
File "C:\Users\QC\AppData\Local\Programs\Python\Python38\lib\ssl.py", line 944, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'bawiki.lgc2333.top'. (_ssl.c:1131)

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

Traceback (most recent call last):
File "bot.py", line 17, in
nonebot.run()
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\nonebot_init_.py", line 273, in run
get_driver().run(*args, **kwargs)
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\nonebot\drivers\fastapi.py", line 187, in run
uvicorn.run(
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\uvicorn\main.py", line 568, in run
server.run()
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\uvicorn\server.py", line 59, in run
return asyncio.run(self.serve(sockets=sockets))
File "C:\Users\QC\AppData\Local\Programs\Python\Python38\lib\asyncio\runners.py", line 44, in run
return loop.run_until_complete(main)
File "C:\Users\QC\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py", line 603, in run_until_complete
self.run_forever()
File "C:\Users\QC\AppData\Local\Programs\Python\Python38\lib\asyncio\windows_events.py", line 316, in run_forever
super().run_forever()
File "C:\Users\QC\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py", line 570, in run_forever
self._run_once()
File "C:\Users\QC\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py", line 1859, in _run_once
handle._run()
File "C:\Users\QC\AppData\Local\Programs\Python\Python38\lib\asyncio\events.py", line 81, in _run
self._context.run(self._callback, *self._args)
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\nonebot\message.py", line 141, in _check_matcher
await _run_matcher(Matcher, bot, event, state, stack, dependency_cache)

File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\nonebot\message.py", line 187, in run_matcher
await matcher.run(bot, event, state, stack, dependency_cache)
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\nonebot\internal\matcher\matcher.py", line 732, in run
await self.simple_run(bot, event, state, stack, dependency_cache)
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\nonebot\internal\matcher\matcher.py", line 707, in simple_run
await handler(
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\nonebot\dependencies_init
.py", line 108, in call
return await cast(Callable[..., Awaitable[R]], self.call)(**values)
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\nonebot_plugin_bawiki_main_.py", line 253, in _
arg = await recover_stu_alia(arg)
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\nonebot_plugin_bawiki\data_bawiki.py", line 72, in recover_stu_alia
ret = recover_alia(a, await db_get_stu_alias())
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\nonebot_plugin_bawiki\data_bawiki.py", line 29, in db_get_stu_alias
return await db_get("data/stu_alias.json")
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\nonebot_plugin_bawiki\data_bawiki.py", line 21, in db_get
return await async_req(f"{BAWIKI_DB_URL}{suffix}", raw=raw)
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\nonebot_plugin_bawiki\util.py", line 72, in async_req
async with c.request(method, url, **kwargs, proxy=proxy) as r:
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\aiohttp\client.py", line 1141, in aenter
self._resp = await self._coro
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\aiohttp\client.py", line 536, in _request
conn = await self._connector.connect(
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\aiohttp\connector.py", line 540, in connect
proto = await self._create_connection(req, traces, timeout)
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\aiohttp\connector.py", line 901, in _create_connection
_, proto = await self._create_direct_connection(req, traces, timeout)
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\aiohttp\connector.py", line 1206, in _create_direct_connection
raise last_exc
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\aiohttp\connector.py", line 1175, in _create_direct_connection
transp, proto = await self._wrap_create_connection(
File "D:\jqr\nonebot2\nb2.venv\lib\site-packages\aiohttp\connector.py", line 982, in _wrap_create_connection
raise ClientConnectorCertificateError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host bawiki.lgc2333.top:443 ssl:True [SSLCertVerificationError: (1, "[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'bawiki.lgc2333.top'. (_ssl.c:1131)")]](url)

ba漫画获取报错

0.8.6测试了一下别的问题都正常了,但是现在ba漫画获取还是会报错,目前就成功过一次其他全部报错无法获取

image

然后就是bawiki绘图截图太快导致数据还没加载到就截图了,倒也不是大问题,有时候出来有时候又好了就很奇怪
fd43e70cfb26852053c358d1c8787622_720

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.