This commit is contained in:
felinae98 2021-11-17 18:12:00 +08:00
parent a098a97032
commit 817363fedf
No known key found for this signature in database
GPG Key ID: 00C8B010587FF610
7 changed files with 1 additions and 8206 deletions

View File

@ -1,12 +0,0 @@
module.exports = {
title: 'Nonebot HK Reporter',
description: 'Docs for Nonebot HK Reporter',
themeConfig: {
nav: [
{ text: '主页', link: '/' },
{ text: '部署与使用', link: '/usage/' },
{ text: '开发', link: '/dev/' },
{ text: 'Github', link: 'https://github.com/felinae98/nonebot-hk-reporter' }
]
}
}

View File

@ -1,15 +0,0 @@
---
home: true
heroText: Nonebot HK Reporter
tagline: 本bot励志做全世界跑得最快的搬运机器人
actionText: 快速部署
actionLink: /usage/
features:
- title: KISS
details: 作为插件可以Simple和Stupid作为插件可以Simple和Stupid作为Bot提供适用的功能
- title: 拓展性强
details: 没有自己想要的网站?只要简单的爬虫知识就可以给它适配一个新的网站
- title: 通用,强大
details: 社交媒体?网站更新?游戏开服?只要能爬就都能推,还支持自定义过滤
footer: MIT Licensed
---

View File

@ -1,53 +0,0 @@
---
sidebar: auto
---
# 开发指南
本插件需要你的帮助!只需要会写简单的爬虫,就能给本插件适配新的网站。
## 基本概念
* `nonebot_hk_reporter.post.Post`: 可以理解为推送内容,其中包含需要发送的文字,图片,链接,平台信息等
* `nonebot_hk_reporter.types.RawPost`: 从站点/平台中爬到的单条信息
* `nonebot_hk_reporter.types.Target`: 目标账号Bilibili微博等社交媒体中的账号
* `nonebot_hk_reporter.types.Category`: 信息分类,例如视频,动态,图文,文章等
* `nonebot_hk_reporter.types.Tag`: 信息标签例如微博中的超话或者hashtag
## 快速上手
上车!我们走
先明确需要适配的站点类型,先明确两个问题:
#### 我要发送什么样的推送
* `nonebot_hk_reporter.platform.platform.NewMessage` 最常见的类型,每次爬虫向特定接口爬取一个消息列表,
与之前爬取的信息对比,过滤出新的消息,再根据用户自定义的分类和标签进行过滤,最后处理消息,把
处理过后的消息发送给用户
例如微博Bilibili
* `nonebot_hk_reporter.platform.platform.StatusChange` 每次爬虫获取一个状态,在状态改变时发布推送
例如:游戏开服提醒,主播上播提醒
* `nonebot_hk_reporter.platform.platform.SimplePost``NewMessage`相似,但是不过滤新的消息
,每次发送全部消息
例如:每日榜单定时发送
#### 这个平台是否有账号的概念
* `nonebot_hk_reporter.platform.platform.TargetMixin` 有账号的概念
例如Bilibili用户微博用户
* `nonebot_hk_reporter.platform.platform.NoTargetMixin` 没有账号的概念
例如:游戏公告,教务处公告
现在你已经选择了两个类,现在你需要在`src/plugins/nonebot_hk_reporter/platform`下新建一个py文件
在里面新建一个类,继承你刚刚选择的两个类,重载一些关键的函数,然后……就完成了,不需要修改别的东西了。
例如要适配微博微博有账号并且我希望bot搬运新的消息所以微博的类应该这样定义
```python
class Weibo(NewMessage, TargetMixin):
...
```
当然我们非常希望你对自己适配的平台写一些单元测试,你可以模仿`tests/platforms/test_*.py`中的内容写
一些单元测试。为保证多次运行测试的一致性可以mock http的响应测试的内容包括获取RawPost处理成Post
测试分类以及提取tag等当然最好和rsshub做一个交叉验证。
::: danger
Nonebot项目使用了全异步的处理方式所以你需要对异步Python asyncio的机制有一定了解当然
依葫芦画瓢也是足够的
:::
## 类的方法与成员变量
## 方法与变量的定义

View File

@ -1,100 +0,0 @@
---
sidebar: auto
---
# 部署和使用
本节将教你快速部署和使用一个nonebot-hk-reporter如果你不知道要选择哪种部署方式推荐使用[docker-compose](#docker-compose部署-推荐)
## 部署
本项目可以作为单独的Bot使用可以作为nonebot2的插件使用
### 作为Bot使用
额外提供自动同意超级用户的好友申请和同意超级用户的加群邀请的功能
#### docker-compose部署推荐
1. 在一个新的目录中下载[docker-compose.yml](https://raw.githubusercontent.com/felinae98/nonebot-hk-reporter/main/docker-compose.yml)
将其中的`<your QQ>`改成自己的QQ号
```bash
wget https://raw.githubusercontent.com/felinae98/nonebot-hk-reporter/main/docker-compose.yml
```
2. 运行配置go-cqhttp
```bash
docker-compose run go-cqhttp
```
通信方式选择:`3: 反向 Websocket 通信`
编辑`bot-data/config.yml`,更改下面字段:
```
account: # 账号相关
uin: <QQ号> # QQ账号
password: "<QQ密码>" # 密码为空时使用扫码登录
message:
post-format: array
............
servers:
- ws-reverse:
universal: ws://nonebot:8080/cqhttp/ws # 将这个字段写为这个值
```
3. 登录go-cqhttp
再次
```bash
docker-compose run go-cqhttp
```
参考[go-cqhttp文档](https://docs.go-cqhttp.org/faq/slider.html#%E6%96%B9%E6%A1%88a-%E8%87%AA%E8%A1%8C%E6%8A%93%E5%8C%85)
完成登录
4. 确定完成登录后启动bot
```bash
docker-compose up -d
```
#### docker部署
本项目的docker镜像为`felinae98/nonebot-hk-reporter`可以直接pull后run进行使用
相关配置参数可以使用`-e`作为环境变量传入
#### 直接运行(不推荐)
可以参考[nonebot的运行方法](https://v2.nonebot.dev/guide/getting-started.html)
::: danger
本项目中使用了Python 3.9的语法如果出现问题请检查Python版本
:::
1. 首先安装poetry[安装方法](https://python-poetry.org/docs/#installation)
2. clone本项目在项目中`poetry install`安装依赖
3. 编辑`.env.prod`配置各种环境变量,见[Nonebot2配置](https://v2.nonebot.dev/guide/basic-configuration.html)
4. 运行`poetry run python bot.py`启动机器人
### 作为插件使用
本部分假设大家会部署nonebot2
#### 手动安装
1. 安装pip包`nonebot-hk-reporter`
2. 在`bot.py`中导入插件`nonebot_hk_reporter`
### 自动安装
使用`nb-cli`执行:`nb plugin install nonebot_hk_reporter`
## 配置
可参考[源文件](https://github.com/felinae98/nonebot-hk-reporter/blob/main/src/plugins/nonebot_hk_reporter/plugin_config.py)
* `HK_REPORTER_CONFIG_PATH`: 插件存放配置文件的位置,如果不设定默认为项目目录下的`data`目录
* `HK_REPORTER_USE_PIC`: 将文字渲染成图片后进行发送,多用于规避风控
* `HK_REPORTER_BROWSER`: 在某些情况下需要使用到chrome进行渲染
* 使用browserless提供的Chrome管理服务设置为`ws://xxxxxxxx`值为Chrome Endpoint推荐
* 使用本地安装的Chrome设置为`local:<chrome path>`,例如`local:/usr/bin/google-chrome-stable`
* 如果不进行配置那么会在使用到Chrome的时候自动进行安装不推荐
### 需要使用Chrome的情况
* 设置了`HK_REPORTER_USE_PIC`,需要将文字渲染成图片
* 渲染明日方舟游戏内公告
## 使用
::: warning
本节假设`COMMAND_START`设置中包含`''`如果出现bot不响应的问题请先
排查这个设置
:::
### 命令
#### 在本群中进行配置
所有命令都需要@bot触发
* 添加订阅仅管理员和群主和SUPERUSER`添加订阅`
* 查询订阅:`查询订阅`
* 删除订阅仅管理员和群主和SUPERUSER`删除订阅`
#### 私聊机器人进行配置需要SUPERUER权限
* 添加订阅:`管理-添加订阅`
* 查询订阅:`管理-查询订阅`
* 删除订阅:`管理-删除订阅`
### 所支持平台的uid
#### Weibo
* 对于一般用户主页`https://weibo.com/u/6441489862?xxxxxxxxxxxxxxx``/u/`后面的数字即为uid
* 对于有个性域名的用户如:`https://weibo.com/arknights`,需要点击左侧信息标签下“更多”,链接为`https://weibo.com/6279793937/about`其中中间数字即为uid
#### Bilibili
主页链接一般为`https://space.bilibili.com/161775300?xxxxxxxxxx`数字即为uid
#### RSS
RSS链接即为uid

View File

@ -1,17 +0,0 @@
{
"name": "nonebot-hk-reporter-docs",
"version": "1.0.0",
"description": "Docs for nonebot-hk-reporter",
"main": "index.js",
"repository": "git@github.com:felinae98/nonebot-hk-reporter.git",
"author": "felinae98 <731499577@qq.com>",
"license": "MIT",
"private": false,
"devDependencies": {
"vuepress": "^1.8.2"
},
"scripts": {
"docs:dev": "vuepress dev docs",
"docs:build": "vuepress build docs"
}
}

View File

@ -54,7 +54,7 @@ def do_add_sub(add_sub: Type[Matcher]):
@add_sub.handle()
async def init_id(bot: Bot, event: Event, state: T_State):
if platform_manager[state['platform']].has_target:
state['_prompt'] = '请输入订阅用户的id详情查阅https://nonebot-hk-reporter.vercel.app/usage/#%E6%89%80%E6%94%AF%E6%8C%81%E5%B9%B3%E5%8F%B0%E7%9A%84uid'
state['_prompt'] = '请输入订阅用户的id详情查阅https://nonebot-bison.vercel.app/usage/#%E6%89%80%E6%94%AF%E6%8C%81%E5%B9%B3%E5%8F%B0%E7%9A%84uid'
else:
state['id'] = 'default'
state['name'] = await platform_manager[state['platform']].get_target_name(Target(''))

8008
yarn.lock

File diff suppressed because it is too large Load Diff