因为B站至今没有群聊功能, 所以只能用私信硬凑 😠
B站作为一个有社交功能的平台, 居然没有群聊功能. 每次想和朋友们分享视频(史)的时候, 都得切到微信群/QQ群, 然后再把链接复制回来, 搬史/赤史体验十分乃至九分的不丝滑.
于是就有了这个项目
bili-squad 是一个Python写的B站群聊机器人, 核心思路非常简单: 收集视频 -> 转发给其他人.
你 -> 发个视频给Bot -> Bot暂存 -> 继续发 -> 继续暂存
-> 输入 /sendto 赤史群 -> Bot把所有内容打包发给群友
- 消息暂存系统:发视频、发文字,想发多少发多少,Bot帮你攒着
- 一键转发:攒够了一波转发到指定群组,避免刷屏
- 群组管理:创建群组、邀请好友、踢人、解散群组
- 分享卡片支持:直接解析B站视频卡片,不用手动复制链接
一个专门做机器人的B站账号, 建议不要用大号
git clone https://github.com/yourusername/bili-squad.git
cd bili-squad
# 复制配置文件
cp config.example.json config.json
# 编辑config.json,填入你刚才复制的认证信息方式一:使用 uv (推荐)
# 安装依赖
uv sync
# 启动机器人
bili-squad方式二:使用 pip
# 安装依赖
pip install -e .
# 启动机器人
bili-squad- 在B站添加机器人账号为好友
- 随便发点什么测试一下
- 发送
/help查看所有命令
你:[分享一个B站视频]
Bot:已暂存 [视频] 某某游戏实况 (当前共 1 条)
你:这个游戏太好玩了
Bot:已暂存文本 (当前共 2 条)
你:/sendto 游戏群
Bot:已成功转发 2 条内容至 [游戏群]
| 命令 | 说明 |
|---|---|
/status |
查看暂存区里 |
/clear |
清空暂存区 |
/sendto 群组名 |
发送到群组 |
/s 群组名 |
/sendto 的别名 |
| 命令 | 说明 |
|---|---|
/help |
显示帮助信息 |
/create 群组名 |
创建新群组 |
/join 群组名 |
加入现有群组 |
/leave 群组名 |
退群 |
/listgroups |
查看我加入的群组 |
/members 群组名 |
查看群组成员 |
/invite 群组名 用户ID |
邀请好友加入 |
/delete 群组名 |
删除群组(仅创建者) |
bili-squad/
├── main.py # 程序入口
├── pyproject.toml # 项目配置和构建设置
├── config.json # 你的配置(不要提交)
├── config.example.json # 配置示例
├── groups.json # 群组数据
└── src/
├── config.py # 配置管理
├── core/
│ └── bot.py # 机器人核心逻辑
├── handlers/
│ ├── base_handler.py # 基础处理器
│ ├── command_handler.py # 命令处理
│ ├── group_message_handler.py # 群消息处理
│ └── default_handler.py # 默认处理
├── models/
│ ├── group.py # 群组数据模型
│ └── group_manager.py # 群组管理
└── utils/
└── logger.py # 日志工具
- 账号安全:认证信息很敏感,不要泄露,不要把
config.json提交到公开仓库 - 使用规范:遵守B站的使用规范,不要拿来做坏事
- 小范围使用:这个项目适合几个朋友的小群组,不适合大规模使用
- API限制:B站API有频率限制,发消息太快可能会被限流
- 账号风险:使用第三方API存在账号被封禁的风险,请自行评估
# 使用 ruff 格式化代码
ruff format .
# 使用 ruff 检查代码
ruff check .
# 自动修复问题
ruff check --fix .
# 使用 mypy 进行类型检查
mypy .
# 或者使用 make(如果有的话)
make format
make check
make lint-fix
make runAGPL-3.0 License
欢迎提Issue和PR
这个项目是我写着玩的(没有考虑并发^_^), 如果能帮到你就最好啦! 如果有问题欢迎提Issue, 我有空会看看.如果没有空,那就算了
鸣谢 bilibili-api 对于本项目开发提供的便利
