Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/xuejianxianzun/bilibili-live-push-qq
监控哔哩哔哩 bilibili 直播间状态,发送提醒到QQ(群)。需要搭配 go-cqhttp 使用
https://github.com/xuejianxianzun/bilibili-live-push-qq
bilibili bilibili-live push
Last synced: 26 days ago
JSON representation
监控哔哩哔哩 bilibili 直播间状态,发送提醒到QQ(群)。需要搭配 go-cqhttp 使用
- Host: GitHub
- URL: https://github.com/xuejianxianzun/bilibili-live-push-qq
- Owner: xuejianxianzun
- Created: 2022-02-06T15:44:33.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2023-06-09T17:54:11.000Z (over 1 year ago)
- Last Synced: 2024-10-27T11:47:13.179Z (about 2 months ago)
- Topics: bilibili, bilibili-live, push
- Language: JavaScript
- Homepage:
- Size: 139 KB
- Stars: 50
- Watchers: 1
- Forks: 16
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
- awesome-bilibili-extra - Bilibili-live-push-qq - 监控哔哩哔哩 bilibili 直播间状态,发送提醒到 QQ(群).![NodeJs](svg/nodejs.svg?raw=true) (机器人 / 直播脚本)
README
# 提醒
由于 QQ 机器人经常挂掉,有时候重登都登不上,你可以查看另一个不使用 QQ 机器人的脚本:
https://github.com/xuejianxianzun/bilibili-live-notify
上面的脚本不需要折腾 QQ 机器人,配置也更简单。
---------------
# Bilibili 直播推送到 QQ 消息
这是一个 Nodejs 脚本,通过 Bilibili 的 API 获取直播间状态,并且当状态变化时在 QQ 上进行通知(通过 QQ 机器人)。
你可以设置:
- 要监控的直播间
- 发送到哪个 QQ 群和(或) QQ 号
- 发送的消息文本
- 是否发送直播间封面图(默认发送)效果图:
![效果图](./screenshot-1.jpg)
**注意:**如果你的 QQ 机器人处于被风控的状态,可能无法发送群消息。
# 运行环境
1. 需要 Nodejs 环境
2. 需要配置 go-cqhttp**go-cqhttp 是一个 QQ 机器人框架,本脚本通过它向 QQ 发送消息。** [访问 go-cqhttp 主页](https://github.com/Mrs4s/go-cqhttp)
# 使用步骤
## 配置
下载 `live-push-qq.js`,并在其中配置你需要监控的直播间。
如果你需要监控多个直播间,可以复制数组里的配置项,添加多个直播间。
```js
// 以直播间为单位进行配置
// 消息里可以使用的转义代码:
// {name} {title} {room_id}
const room_list = [
{
room_id: 23251345, // 直播间 id
name: '主播名字或昵称', // 主播名字或昵称
status: 0, // 直播状态,不需要用户修改
cover: '', // 封面图,不需要用户修改
send_cover: true, // 是否发送直播间封面图片
title: '', // 直播间标题,不需要用户修改
interval: 60000, // 多久查询一次直播状态(毫秒)。默认 1 分钟查询一次
qq_group: 123456789, // 发送消息到哪个 QQ 群里。设置为 0 则不发送。(不会 @全体成员)
// 如果需要更复杂的 qq 群消息设置,例如发送到多个群,或者(并且)需要 @全体成员,则可以把上面的 qq_group 设置为 0
// 然后在下面的 qq_group_list 里设置群号和是否 @全体成员
// qq_group_list 不使用时可以为空数组,也可以删除该属性
qq_group_list: [
{
id: 1111111,
at_all: true,
},
{
id: 222222,
at_all: false,
},
],
qq_person: 111111111, // 发送消息到哪个 QQ 号上(即私聊)。设置为 0 则不发送。如果需要发送,建议先加好友,不知道对陌生人能不能发送
msg: [ // 当直播状态变化时要发送的提醒消息
'{name}尚未开播', // 0 尚未开播的提醒消息
'{name}正在直播:{title} https://live.bilibili.com/{room_id}', // 1 正在直播的提醒消息
'{name}正在轮播' // 2 轮播的提醒消息
],
},
]
```## 启动
之后启动这个脚本:
```shell
# 使用 node 启动
node live-push-qq.js# 或者使用守护进程来启动,例如:
forever start live-push-qq.js
```# 提醒
## 默认只有开播会发送消息
代码里的函数 `sendMsg` 用于发送提醒消息。
默认只有当主播开播时才会发送消息,如果你需要在下播时也发送消息,可以启用被注释掉的 `sendMsg` 调用。
## QQ 小号被风控的问题
使用 go-cqhttp 给 QQ 群发送太多消息可能会被腾讯风控,期间无法发送群消息(但是给 QQ 号发消息一般不会有事)。
如图:
![效果图](./screenshot-2.png)
以下措施有助于缓解或解决风控问题:
- 减少发送群消息的数量、频次、字数
- 不发送封面图片,只发纯文字消息
- 删除文件 `session.token`,然后重新启动 go-cqhttp 进行登录
- go-cqhttp 上登录的 QQ 号多挂几天,也许就好了