<div align="center">
![BBot-Graia](https://socialify.git.ci/djkcyl/BBot/image?description=1&font=Inter&logo=https%3A%2F%2Fgithub.com%2Fdjkcyl%2FBBot%2Fblob%2Fmaster%2Flogo.png%3Fraw%3Dtrue&owner=1&pattern=Circuit%20Board&theme=Dark)
# BBot for Ariadne
![GitHub Repo stars](https://img.shields.io/github/stars/djkcyl/BBot?style=social)
![GitHub forks](https://img.shields.io/github/forks/djkcyl/BBot?style=social)
![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/djkcyl/BBot/prerelease.yml?branch=web)
![GitHub release (latest by date)](https://img.shields.io/github/v/release/djkcyl/BBot?color=brightgreen)
![GitHub all releases](https://img.shields.io/github/downloads/djkcyl/BBot/total)
![Platform](https://img.shields.io/badge/platform-linux_%7C_windows-lightgrey)
[![License](https://img.shields.io/github/license/djkcyl/BBot)](https://github.com/djkcyl/BBot/blob/master/LICENSE)
[![wakatime](https://wakatime.com/badge/github/djkcyl/BBot.svg)](https://wakatime.com/badge/github/djkcyl/BBot)
![QQ](https://img.shields.io/badge/Tencent_QQ-2948531755-ff69b4)
![Python Version](https://img.shields.io/badge/python-3.9-blue)
![Poetry Using](https://img.shields.io/badge/poetry-using-blue)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/djkcyl/bbot)
![!](https://count.getloli.com/get/@BBot-Graia?theme=rule34)
基于 [Graia-Ariadne](../../../../GraiaProject/Ariadne) 搭建的高效、高性能哔哩哔哩推送 [QQ](../../../../project-mirai/mirai-api-http) 机器人
```text
BBot
B,是 26 个英文字母里的第二个,可意为我个人的第二个机器人
B,也代表 BiliBili,这个 Bot 将专注于哔哩哔哩的推送等服务
```
</div>
## BBot 现在能干什么
- 订阅 UP 主 ~~废话~~
- 推送直播(开播及下播)~~废话~~
- 推送动态 ~~废话~~
- 视频链接解析
## 特色
- 大量使用并发 **gRPC 接口**,推送效率远超使用 REST Api 的哔哩哔哩机器人且目前未见有风控(-421)风险
- ~~使用登录和非登录两种方案,对于财大气粗的用户可以登录后再次提升效率~~ **不建议使用**
- 动态使用 Web 端截图,虽然会吃那么点性能,~~但这都是值得的~~
- 可自由配置是否在群内 @全体成员、对于直播和动态的分别控制等
- 可针对不同群聊对订阅的 UP 主进行昵称替换
- 可限制每个群可订阅的最大 UP 主数量
## 使用
**[BBot 使用文档](https://github.com/djkcyl/BBot/wiki)**
Docker 部署请查看 [这里](https://github.com/djkcyl/BBot-Graia/wiki/Docker)
## TODO
- [x] 增加群内配置功能
- [x] 增加菜单(/help 指令)
- [x] 使用数据库存储推送记录
- [x] 增加动态自动点赞功能
- [x] 支持 up 全名搜索
- [x] 增加可选的动态推送样式(App 样式)
- [x] 定时刷新 token,防止过期
- [x] 针对 Windows 和 Linux 平台,增加 Release 打包版本
- [x] 增加非登录式的推送更新逻辑
- [x] 更换 BiliBili 请求库为更成熟的 [BiliReq](../../../../SK-415/bilireq)
- [x] 可能会增加不需要浏览器的动态截图获取方式
- [x] 增加 Docker 部署方案
- [x] 自定义动态页字体
- [x] 上传至 PyPI 并支持 CLI 方式启动
- [ ] **增加 Web 端管理界面**
- [ ] 增加简单的推送数据分析及报告
- [ ] 丰富管理员指令
- [ ] 增加订阅组(同时订阅多个设定好的 up,如 `和谐有爱五人组`...)
- [ ] ~~可能会增加其他平台的推送~~
More...
## 感谢
- [HarukaBot](../../../../SK-415/HarukaBot) 学习对象
- [bilibili-API-collect](../../../../SocialSisterYi/bilibili-API-collect) 易姐收集的各种 BiliBili Api 及其提供的 gRPC Api 调用方案
- [ABot-Graia](../../../../djkcyl/ABot-Graia) 永远怀念最好的 ABot 🙏
- [Well404](https://space.bilibili.com/33138220/) 为本项目编写文档以及部署教程[视频](https://www.bilibili.com/video/BV16B4y137sx)
- [八萬](https://space.bilibili.com/8027000) 项目 Logo 画师
## Stargazers over time
[![Stargazers over time](https://starchart.cc/djkcyl/BBot.svg)](https://starchart.cc/djkcyl/BBot)
Raw data
{
"_id": null,
"home_page": "https://github.com/djkcyl/BBot-Graia",
"name": "graiax-bbot",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.9,<4.0",
"maintainer_email": "",
"keywords": "graia,graiax,bilibili,qqbot,grpc,playwright,fastapi,bot",
"author": "djkcyl",
"author_email": "cyl@cyllive.cn",
"download_url": "https://files.pythonhosted.org/packages/0a/19/ef9f55b0ee681b965ef061859820c2534450ed80a3831b5a16f239b666ed/graiax_bbot-1.2.0b5.tar.gz",
"platform": null,
"description": "<div align=\"center\">\n\n![BBot-Graia](https://socialify.git.ci/djkcyl/BBot/image?description=1&font=Inter&logo=https%3A%2F%2Fgithub.com%2Fdjkcyl%2FBBot%2Fblob%2Fmaster%2Flogo.png%3Fraw%3Dtrue&owner=1&pattern=Circuit%20Board&theme=Dark)\n \n# BBot for Ariadne\n![GitHub Repo stars](https://img.shields.io/github/stars/djkcyl/BBot?style=social)\n![GitHub forks](https://img.shields.io/github/forks/djkcyl/BBot?style=social)\n\n![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/djkcyl/BBot/prerelease.yml?branch=web)\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/djkcyl/BBot?color=brightgreen)\n![GitHub all releases](https://img.shields.io/github/downloads/djkcyl/BBot/total)\n![Platform](https://img.shields.io/badge/platform-linux_%7C_windows-lightgrey)\n\n[![License](https://img.shields.io/github/license/djkcyl/BBot)](https://github.com/djkcyl/BBot/blob/master/LICENSE)\n[![wakatime](https://wakatime.com/badge/github/djkcyl/BBot.svg)](https://wakatime.com/badge/github/djkcyl/BBot)\n![QQ](https://img.shields.io/badge/Tencent_QQ-2948531755-ff69b4)\n\n![Python Version](https://img.shields.io/badge/python-3.9-blue)\n![Poetry Using](https://img.shields.io/badge/poetry-using-blue)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/djkcyl/bbot)\n\n![!](https://count.getloli.com/get/@BBot-Graia?theme=rule34)\n\n\u57fa\u4e8e [Graia-Ariadne](../../../../GraiaProject/Ariadne) \u642d\u5efa\u7684\u9ad8\u6548\u3001\u9ad8\u6027\u80fd\u54d4\u54e9\u54d4\u54e9\u63a8\u9001 [QQ](../../../../project-mirai/mirai-api-http) \u673a\u5668\u4eba\n\n```text\nBBot\nB\uff0c\u662f 26 \u4e2a\u82f1\u6587\u5b57\u6bcd\u91cc\u7684\u7b2c\u4e8c\u4e2a\uff0c\u53ef\u610f\u4e3a\u6211\u4e2a\u4eba\u7684\u7b2c\u4e8c\u4e2a\u673a\u5668\u4eba\nB\uff0c\u4e5f\u4ee3\u8868 BiliBili\uff0c\u8fd9\u4e2a Bot \u5c06\u4e13\u6ce8\u4e8e\u54d4\u54e9\u54d4\u54e9\u7684\u63a8\u9001\u7b49\u670d\u52a1\n```\n\n</div>\n\n## BBot \u73b0\u5728\u80fd\u5e72\u4ec0\u4e48\n\n- \u8ba2\u9605 UP \u4e3b ~~\u5e9f\u8bdd~~\n- \u63a8\u9001\u76f4\u64ad\uff08\u5f00\u64ad\u53ca\u4e0b\u64ad\uff09~~\u5e9f\u8bdd~~\n- \u63a8\u9001\u52a8\u6001 ~~\u5e9f\u8bdd~~\n- \u89c6\u9891\u94fe\u63a5\u89e3\u6790\n\n## \u7279\u8272\n\n- \u5927\u91cf\u4f7f\u7528\u5e76\u53d1 **gRPC \u63a5\u53e3**\uff0c\u63a8\u9001\u6548\u7387\u8fdc\u8d85\u4f7f\u7528 REST Api \u7684\u54d4\u54e9\u54d4\u54e9\u673a\u5668\u4eba\u4e14\u76ee\u524d\u672a\u89c1\u6709\u98ce\u63a7\uff08-421\uff09\u98ce\u9669\n- ~~\u4f7f\u7528\u767b\u5f55\u548c\u975e\u767b\u5f55\u4e24\u79cd\u65b9\u6848\uff0c\u5bf9\u4e8e\u8d22\u5927\u6c14\u7c97\u7684\u7528\u6237\u53ef\u4ee5\u767b\u5f55\u540e\u518d\u6b21\u63d0\u5347\u6548\u7387~~ **\u4e0d\u5efa\u8bae\u4f7f\u7528**\n- \u52a8\u6001\u4f7f\u7528 Web \u7aef\u622a\u56fe\uff0c\u867d\u7136\u4f1a\u5403\u90a3\u4e48\u70b9\u6027\u80fd\uff0c~~\u4f46\u8fd9\u90fd\u662f\u503c\u5f97\u7684~~\n- \u53ef\u81ea\u7531\u914d\u7f6e\u662f\u5426\u5728\u7fa4\u5185 @\u5168\u4f53\u6210\u5458\u3001\u5bf9\u4e8e\u76f4\u64ad\u548c\u52a8\u6001\u7684\u5206\u522b\u63a7\u5236\u7b49\n- \u53ef\u9488\u5bf9\u4e0d\u540c\u7fa4\u804a\u5bf9\u8ba2\u9605\u7684 UP \u4e3b\u8fdb\u884c\u6635\u79f0\u66ff\u6362\n- \u53ef\u9650\u5236\u6bcf\u4e2a\u7fa4\u53ef\u8ba2\u9605\u7684\u6700\u5927 UP \u4e3b\u6570\u91cf\n\n## \u4f7f\u7528\n\n**[BBot \u4f7f\u7528\u6587\u6863](https://github.com/djkcyl/BBot/wiki)**\n\nDocker \u90e8\u7f72\u8bf7\u67e5\u770b [\u8fd9\u91cc](https://github.com/djkcyl/BBot-Graia/wiki/Docker)\n\n## TODO\n\n- [x] \u589e\u52a0\u7fa4\u5185\u914d\u7f6e\u529f\u80fd\n- [x] \u589e\u52a0\u83dc\u5355\uff08/help \u6307\u4ee4\uff09\n- [x] \u4f7f\u7528\u6570\u636e\u5e93\u5b58\u50a8\u63a8\u9001\u8bb0\u5f55\n- [x] \u589e\u52a0\u52a8\u6001\u81ea\u52a8\u70b9\u8d5e\u529f\u80fd\n- [x] \u652f\u6301 up \u5168\u540d\u641c\u7d22\n- [x] \u589e\u52a0\u53ef\u9009\u7684\u52a8\u6001\u63a8\u9001\u6837\u5f0f\uff08App \u6837\u5f0f\uff09\n- [x] \u5b9a\u65f6\u5237\u65b0 token\uff0c\u9632\u6b62\u8fc7\u671f\n- [x] \u9488\u5bf9 Windows \u548c Linux \u5e73\u53f0\uff0c\u589e\u52a0 Release \u6253\u5305\u7248\u672c\n- [x] \u589e\u52a0\u975e\u767b\u5f55\u5f0f\u7684\u63a8\u9001\u66f4\u65b0\u903b\u8f91\n- [x] \u66f4\u6362 BiliBili \u8bf7\u6c42\u5e93\u4e3a\u66f4\u6210\u719f\u7684 [BiliReq](../../../../SK-415/bilireq)\n- [x] \u53ef\u80fd\u4f1a\u589e\u52a0\u4e0d\u9700\u8981\u6d4f\u89c8\u5668\u7684\u52a8\u6001\u622a\u56fe\u83b7\u53d6\u65b9\u5f0f\n- [x] \u589e\u52a0 Docker \u90e8\u7f72\u65b9\u6848\n- [x] \u81ea\u5b9a\u4e49\u52a8\u6001\u9875\u5b57\u4f53\n- [x] \u4e0a\u4f20\u81f3 PyPI \u5e76\u652f\u6301 CLI \u65b9\u5f0f\u542f\u52a8\n- [ ] **\u589e\u52a0 Web \u7aef\u7ba1\u7406\u754c\u9762**\n- [ ] \u589e\u52a0\u7b80\u5355\u7684\u63a8\u9001\u6570\u636e\u5206\u6790\u53ca\u62a5\u544a\n- [ ] \u4e30\u5bcc\u7ba1\u7406\u5458\u6307\u4ee4\n- [ ] \u589e\u52a0\u8ba2\u9605\u7ec4\uff08\u540c\u65f6\u8ba2\u9605\u591a\u4e2a\u8bbe\u5b9a\u597d\u7684 up\uff0c\u5982 `\u548c\u8c10\u6709\u7231\u4e94\u4eba\u7ec4`...\uff09\n- [ ] ~~\u53ef\u80fd\u4f1a\u589e\u52a0\u5176\u4ed6\u5e73\u53f0\u7684\u63a8\u9001~~\n\n\nMore...\n\n## \u611f\u8c22\n\n- [HarukaBot](../../../../SK-415/HarukaBot) \u5b66\u4e60\u5bf9\u8c61\n- [bilibili-API-collect](../../../../SocialSisterYi/bilibili-API-collect) \u6613\u59d0\u6536\u96c6\u7684\u5404\u79cd BiliBili Api \u53ca\u5176\u63d0\u4f9b\u7684 gRPC Api \u8c03\u7528\u65b9\u6848\n- [ABot-Graia](../../../../djkcyl/ABot-Graia) \u6c38\u8fdc\u6000\u5ff5\u6700\u597d\u7684 ABot \ud83d\ude4f\n- [Well404](https://space.bilibili.com/33138220/) \u4e3a\u672c\u9879\u76ee\u7f16\u5199\u6587\u6863\u4ee5\u53ca\u90e8\u7f72\u6559\u7a0b[\u89c6\u9891](https://www.bilibili.com/video/BV16B4y137sx)\n- [\u516b\u842c](https://space.bilibili.com/8027000) \u9879\u76ee Logo \u753b\u5e08\n\n## Stargazers over time\n\n[![Stargazers over time](https://starchart.cc/djkcyl/BBot.svg)](https://starchart.cc/djkcyl/BBot)\n",
"bugtrack_url": null,
"license": "AGPL3.0",
"summary": "\u4e00\u4e2a\u7528\u4e8e QQ \u7fa4\u5185\u9ad8\u6548\u63a8\u9001\u54d4\u54e9\u54d4\u54e9 UP \u52a8\u6001\u53ca\u76f4\u64ad\u7684\u673a\u5668\u4eba",
"version": "1.2.0b5",
"split_keywords": [
"graia",
"graiax",
"bilibili",
"qqbot",
"grpc",
"playwright",
"fastapi",
"bot"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "029e42a5c3e8350b7ff6be30af04642a404f8b3213b0a39a26cf5fa55646ede4",
"md5": "b6ad646662998275f80273ff2f483ec2",
"sha256": "f23c30926fc7259527f5968dcb275b62b094f10f7d7be92420a10aa02e2eaf85"
},
"downloads": -1,
"filename": "graiax_bbot-1.2.0b5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b6ad646662998275f80273ff2f483ec2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9,<4.0",
"size": 27404545,
"upload_time": "2023-01-13T18:16:58",
"upload_time_iso_8601": "2023-01-13T18:16:58.425018Z",
"url": "https://files.pythonhosted.org/packages/02/9e/42a5c3e8350b7ff6be30af04642a404f8b3213b0a39a26cf5fa55646ede4/graiax_bbot-1.2.0b5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0a19ef9f55b0ee681b965ef061859820c2534450ed80a3831b5a16f239b666ed",
"md5": "08d898ec8125e127a5360a41ff89a88a",
"sha256": "c5ef67e46ba75e0b35bca1a770962d08906d87d20435673e31f3a9c1c3507872"
},
"downloads": -1,
"filename": "graiax_bbot-1.2.0b5.tar.gz",
"has_sig": false,
"md5_digest": "08d898ec8125e127a5360a41ff89a88a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9,<4.0",
"size": 27303832,
"upload_time": "2023-01-13T18:17:01",
"upload_time_iso_8601": "2023-01-13T18:17:01.750290Z",
"url": "https://files.pythonhosted.org/packages/0a/19/ef9f55b0ee681b965ef061859820c2534450ed80a3831b5a16f239b666ed/graiax_bbot-1.2.0b5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-01-13 18:17:01",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "djkcyl",
"github_project": "BBot-Graia",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "graiax-bbot"
}