Twitter -> QQ Bot

LI JIAHAO 588ae702b9 :ambulance: critical bugfix 6 anni fa
dist 588ae702b9 :ambulance: critical bugfix 6 anni fa
src 588ae702b9 :ambulance: critical bugfix 6 anni fa
.gitignore 731dec0834 :bug: write lockfile 6 anni fa
LICENSE fe92e261f8 :memo: doc and fix 6 anni fa
README.md ce129da9a6 :arrow_up: upgrade dependency 6 anni fa
config.example.json 2aa435dd8d :sparkles: loglevel and datetime 6 anni fa
package.json e360f0274f 1.0.1 6 anni fa
tsconfig.json 2aa435dd8d :sparkles: loglevel and datetime 6 anni fa
tslint.json 588ae702b9 :ambulance: critical bugfix 6 anni fa
yarn.lock ce129da9a6 :arrow_up: upgrade dependency 6 anni fa

README.md

CQHTTP Twitter Bot

npm npm GitHub issues npm

是一个可以订阅 Twitter 并转发到 QQ 的 Bot。

安装

npm i -g cqhttp-twitter-bot

当然还需要配合 coolq-http-api酷Q 才能工作。
它们是什么?
观察它们的文档:https://cqhttp.cc/ https://cqp.cc/t/15124

食用

$ cqhttp-twitter-bot config.json

配置

它会从命令传入的 JSON 配置文件里读取配置,配置说明如下

配置项 说明 默认
cq_ws_host CQHTTP Websocket 服务端地址 127.0.0.1
cq_ws_port CQHTTP Websocket 服务端口 6700
cq_access_token CQHTTP access_token (空)
twitter_consumer_key Twitter App consumer_key (必填)
twitter_consumer_secret Twitter App consumer_secret (必填)
twitter_access_token_key Twitter App access_token_key (必填)
twitter_access_token_secret Twitter App access_token_secret (必填)
work_interval 对单个订阅两次拉取更新的最少间隔时间(秒) 60
webshot_delay 抓取网页截图时等待网页加载的延迟时长(毫秒) 5000
lockfile 本地保存订阅信息以便下次启动时恢复 subscriber.lock
loglevel 日志调试等级 info

示例文件在 config.example.json

命令

Bot 启动了以后就可以在 QQ 里用命令了。命令有:

  • /twitter - 列出当前会话的订阅
  • /twitter_subscribe [链接] - 订阅
  • /twitter_unsubscribe [链接] - 退订

链接可以是一个个人的时间轴或者是列表, 例如:

个人:https://twitter.com/Saito_Shuka
列表:https://twitter.com/rikakomoe/lists/lovelive

必须是这个模式才行 qvq

其他说明

  1. Twitter 这两个(时间轴和列表) API 对单个应用的限制是 900次/15min, 也就是最快可以 1s 一次。这个 Bot 的工作方式是轮流拉取,即: 每次从队首拿出任务,完成后放到队尾。在不达到 1s 一次的前提下, 总体请求速度会随着订阅量的增加而加快:例如当 work_interval 设置为 60 时, 如果只有 1 个订阅,那么每分钟只有 1 个请求。如果有 2 个订阅,每分钟则有 2 个请求。 如果有 70 个订阅,每分钟仍然只有 60 个请求。

  2. 上面说的每分钟之类指的是休眠的时长,工作时间不算在内。因此实际的 API 调用 频率要比这个低。

  3. webshot_delay 如果设成 0 的话肯定不行的,会出现正在加载的界面。这个具体多 少最合适可以自己试,5 秒应该是比较保险了。

  4. 如果在同一个聊天里的会话有重复,不会被去重。例如在某聊天中同时订阅了特朗普和 包含特朗普的列表 A,那么每次特朗普发推你都会收到两条一样的推送。这个是因为 API 的构造 本身决定的,要是给你去重的话还得存给你推过哪些,很麻烦,懒得做,意义不大,就注意不要 这样就好了。

  5. 列表中是没有回复的。实际上你看 Twitter 的列表本来也没有回复。个人的时间轴会显示 回复。