文章的语雀地址
用户向机器人发送相应指令,就可以完成
- 添加订阅
- 修改订阅(包括更新频率、是否使用代理等)
等多种操作,并通过机器人接收相应更新通知。
系统组件
- RSSHub(可选):抓取网页,生成rss
- go-cqhttp:QQ机器人主体
- ELF_RSS:RSS订阅主体,通过机器人读取指令进行处理,再通过API发送相应QQ消息
RSSHub
项目主页:https://github/DIYgod/RSSHub
工作原理:(引用自常见问题)
请求路由时,RSSHub 会按照给定规则请求源站数据,然后以 RSS 格式输出;如果在设定缓存时间内重新请求路由,则会直接返回缓存内容,不请求源站;再加一点点魔法。
目前找到了两个公开站点:
- https://rsshub.app
- https://rss.shab.fun
站点1是rsshub作者自己搭建的演示地址,需要科学上网且更新速度较慢(缓存时间20分钟);站点2是ELF_RSS的作者搭建的,能够正常访问且速度快。
此外,还可以自行搭建rsshub服务器,使用docker搭建非常方便。若想添加自己的规则,则需要在服务器端更新相应代码,因此推荐自行搭建。
docker pull diygod/rsshub
docker run -d --name rsshub -p 1200:1200 diygod/rsshub
go-cqhttp
项目主页:https://github/Mrs4s/go-cqhttp
QQ机器人,支持:
- HTTP API
- 反向HTTP POST
- 正向WebSocket
- 反向WebSocket
部署
直接在release页面下载相应文件,解压之后即可使用。在启动之前,新建config.yml
文件:
# go-cqhttp 默认配置文件
account: # 账号相关
uin: 1233456 # QQ账号
password: '' # 密码为空时使用扫码登录
encrypt: false # 是否开启密码加密
status: 0 # 在线状态 请参考 https://github/Mrs4s/go-cqhttp/blob/dev/docs/config.md#在线状态
relogin: # 重连设置
delay: 3 # 首次重连延迟, 单位秒
interval: 3 # 重连间隔
max-times: 0 # 最大重连次数, 0为无限制
# 是否使用服务器下发的新地址进行重连
# 注意, 此设置可能导致在海外服务器上连接情况更差
use-sso-address: true
heartbeat:
# 心跳频率, 单位秒
# -1 为关闭心跳
interval: 5
message:
# 上报数据类型
# 可选: string,array
post-format: string
# 是否忽略无效的CQ码, 如果为假将原样发送
ignore-invalid-cqcode: false
# 是否强制分片发送消息
# 分片发送将会带来更快的速度
# 但是兼容性会有些问题
force-fragment: false
# 是否将url分片发送
fix-url: false
# 下载图片等请求网络代理
proxy-rewrite: ''
# 是否上报自身消息
report-self-message: false
# 移除服务端的Reply附带的At
remove-reply-at: false
# 为Reply附加更多信息
extra-reply-data: false
output:
# 日志等级 trace,debug,info,warn,error
log-level: warn
# 是否启用 DEBUG
debug: false # 开启调试模式
# 默认中间件锚点
default-middlewares: &default
# 访问密钥, 强烈推荐在公网的服务器设置
access-token: ''
# 事件过滤器文件目录
filter: ''
# API限速设置
# 该设置为全局生效
# 原 cqhttp 虽然启用了 rate_limit 后缀, 但是基本没插件适配
# 目前该限速设置为令牌桶算法, 请参考:
# https://baike.baidu/item/%E4%BB%A4%E7%89%8C%E6%A1%B6%E7%AE%97%E6%B3%95/6597000?fr=aladdin
rate-limit:
enabled: false # 是否启用限速
frequency: 1 # 令牌回复频率, 单位秒
bucket: 1 # 令牌桶大小
database: # 数据库相关设置
leveldb:
# 是否启用内置leveldb数据库
# 启用将会增加10-20MB的内存占用和一定的磁盘空间
# 关闭将无法使用 撤回 回复 get_msg 等上下文相关功能
enable: true
# 连接服务列表
servers:
# HTTP 通信设置
- http:
# 服务端监听地址
host: 127.0.0.1
# 服务端监听端口
port: 5700
# 反向HTTP超时时间, 单位秒
# 最小值为5,小于5将会忽略本项设置
timeout: 5
middlewares:
<<: *default # 引用默认中间件
# 反向HTTP POST地址列表
post:
#- url: '' # 地址
# secret: '' # 密钥
#- url: 127.0.0.1:5701 # 地址
# secret: '' # 密钥
# 正向WS设置
- ws:
# 正向WS服务器监听地址
host: 127.0.0.1
# 正向WS服务器监听端口
port: 6700
middlewares:
<<: *default # 引用默认中间件
# 反向WS设置
- ws-reverse:
# 反向WS Universal 地址
# 注意 设置了此项地址后下面两项将会被忽略
universal: ws://127.0.0.1:8080/cqhttp/ws/
# 反向WS API 地址
api: ws://your_websocket_api.server
# 反向WS Event 地址
event: ws://your_websocket_event.server
# 重连间隔 单位毫秒
reconnect-interval: 3000
middlewares:
<<: *default # 引用默认中间件
# pprof 性能分析服务器, 一般情况下不需要启用.
# 如果遇到性能问题请上传报告给开发者处理
# 注意: pprof服务不支持中间件、不支持鉴权. 请不要开放到公网
- pprof:
# 是否禁用pprof性能分析服务器
disabled: true
# pprof服务器监听地址
host: 127.0.0.1
# pprof服务器监听端口
port: 7700
# 可添加更多
# 添加方式,同一连接方式可添加多个,具体配置说明请查看 go-cqhttp 文档
#- http: # http 通信
#- ws: # 正向 Websocket
#- ws-reverse: # 反向 Websocket
#- pprof: #性能分析服务器
运行
在配置文件中填写好机器人的账号以及密码之后,直接在目录下运行./go-cqhttp faststart
其他
帮助中心:https://docs.go-cqhttp
- 在最新版本中,加入了频道相关的API,支持发送消息到子频道
- 可以通过HTTP接口来实现相关操作
ELF_RSS
项目主页:https://github/Quan666/ELF_RSS
首先下载代码并构建docker镜像
git clone https://github/Quan666/ELF_RSS.git
cd ELF_RSS
docker build -t elfrss:latest .
然后将文件夹内的.env.dev
复制一份为.env.prod
,并填写:
- 管理员QQ
- rsshub地址、备用地址
- 将
IS_LINUX
设置为true
然后启动容器,就会自动运行主体:
docker run --name elfrss -p 8080:8080 -v $(pwd)/:/app/ -e TZ=Asia/Shanghai -d elfrss:latest
使用
成功启动go-cqhttp以及ELF_RSS之后,就可以开始使用了。
添加订阅
add {订阅名称} {订阅地址}
- 订阅名称:自定义
- 订阅地址:可以使用普通rss地址,或者rsshub地址
若使用普通地址:
若使用rsshub地址:
此时格式需要参考rsshub文档(需要科学上网),能够支持非常多的订阅内容,并且已经支持不少高校的通知:
- rss订阅的其他用法参见项目文档,或者ELF_RSS使用手册
效果
更多推荐
QQ机器人实现RSS订阅(github项目)
发布评论