nonebot-plugin-tieba-monitor
基于 NoneBot2 的贴吧帖子监控插件,用于监控指定贴吧的新帖子并发送到 QQ 群。
功能特性
- 监控多个贴吧的新帖子
- 支持自定义检查时间间隔
- 支持多群组通知
- 首次启动自动执行一次巡检,后续按计划任务运行
- 在本地目录缓存帖子数据,便于手动读取最新记录
- 提供 SUPERUSER 触发的
刷新帖子/检查贴吧命令 - 支持 AI 内容分析与过滤(可选)
安装
使用 nb-cli
nb plugin install nonebot-plugin-tieba-monitor
使用方法
- 在 NoneBot2 项目中,确保配置了 OneBot 适配器
- 在
.env文件中添加插件配置 - 启动 NoneBot2,插件将自动运行并按照配置的时间间隔监控贴吧
Bot 命令
| 指令 | 权限 | 说明 |
|---|---|---|
刷新帖子 <贴吧名> |
SUPERUSER | 立即读取指定贴吧在本地缓存的最新帖子并推送到当前群,结果会标记为“手动刷新”。 |
检查贴吧 |
SUPERUSER | 立刻轮询所有已配置的贴吧,触发抓取、AI 筛选与群发,并返回成功/失败统计。 |
以上命令默认需要
to_me规则(@机器人)才能触发,可通过 NoneBot 配置调整。
功能说明
- 定时抓取:依赖
nonebot_plugin_apscheduler,按照tieba_check_interval_seconds周期检测全部已配置贴吧。 - 启动即查:Bot 启动后延迟 5 秒执行一次初始检查,确保冷启动时也能收到最新帖子。
- 数据持久化:所有帖子缓存到
tieba_output_directory指定的 JSON 文件,刷新帖子命令直接读取这些文件。 - AI 审核:启用
tieba_ai_enabled后会调 OpenAI 兼容接口进行敏感/广告判别,命中tieba_ai_filter_keys中任意字段会被过滤。 - 多群播报:每个贴吧可绑定多个群号;抓取到的新帖会逐群发送,并加入随机延迟减少风控。
- 手动控制:
检查贴吧命令同步执行完整抓取流程,并返回成功/失败统计,方便排查。
配置项
在 .env 文件中,你可以配置以下参数:
基础配置
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
tieba_check_interval_seconds |
int | 300 | 检查新帖子的时间间隔(秒) |
tieba_output_directory |
str | "data/tieba_data" | 保存帖子数据的文件夹路径 |
tieba_threads_to_retrieve |
int | 5 | 每次检查时获取的最新帖子数量 |
tieba_forum_groups |
Dict[str, List[int]] | {} | 每个贴吧特定的通知群组,需填写合法 JSON/字典字符串,如:{"贴吧名称": [123456789, 987654321]} |
.env中写入复杂结构时推荐使用单行 JSON 并转义双引号,或改用 Python 字典字符串。
AI 分析配置(可选)
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
tieba_ai_enabled |
bool | false | 是否启用 AI 分析 |
tieba_ai_apikey |
str | "" | AI API 密钥 |
tieba_ai_endpoint |
str | "https://api.openai.com/v1" | AI API 端点 |
tieba_ai_model |
str | "gpt-3.5-turbo" | AI 模型名称 |
tieba_ai_max_chars |
int | 100 | 发送给 AI 的最大字符数,0 表示不截断 |
tieba_ai_system_prompt |
str | (见代码) | AI 分析使用的系统提示词,用于自定义 AI 的分析行为 |
tieba_ai_filter_keys |
List[str] | ["是否包含敏感内容", "是否包含广告、营销信息"] | 命中任意字段且值为 true 时视为不发送 |
TIEBA_AI_ENABLED等布尔环境变量不区分大小写;若自定义tieba_ai_system_prompt,请确保与tieba_ai_filter_keys中的字段对应。
配置示例
# 基础配置
tieba_check_interval_seconds=300
tieba_output_directory=data/tieba_data
tieba_threads_to_retrieve=10
# 贴吧监控配置 - 格式: {'贴吧名': [群号1, 群号2]}
# 例如监控"王者荣耀"贴吧并发送到群 123456789 和 987654321
tieba_forum_groups={"王者荣耀": [123456789, 987654321], "英雄联盟": [123456789]}
# AI 分析配置(可选)
tieba_ai_enabled=false
tieba_ai_apikey=your_api_key
tieba_ai_endpoint=https://api.openai.com/v1
tieba_ai_model=gpt-3.5-turbo
tieba_ai_max_chars=500
tieba_ai_filter_keys=["是否包含敏感内容", "是否包含广告、营销信息"]
tieba_ai_system_prompt="""你是一个帖子内容分析助手。分析以下内容并返回JSON格式的结果..."""
注意事项
- 请确保
.env文件中的tieba_forum_groups参数格式正确 - 若启用 AI 分析功能,请提供有效的 API 密钥
- 首次启动时,插件将立即执行一次贴吧检查
- 如需自定义 AI 提示词,请确保返回格式与默认提示词一致
- 手动命令仅 SUPERUSER 可用,且默认需要 @ 机器人
- 帖子缓存文件保存在
tieba_output_directory指定的目录下,刷新帖子命令依赖这些文件
更多信息
- 本插件利用
aiotieba库进行贴吧内容获取 - 使用
nonebot-plugin-apscheduler进行定时任务管理 - 插件会将帖子数据保存在配置的输出目录中
许可证
本项目使用 GNU AGPLv3 作为开源许可证。
Metadata
Release files for nonebot-plugin-tieba-monitor 0.1.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nonebot_plugin_tieba_monitor-0.1.8.tar.gz | 26.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nonebot_plugin_tieba_monitor-0.1.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 52.8 kB
Release files / nonebot_plugin_tieba_monitor-0.1.8.tar.gz
| Download URL | nonebot_plugin_tieba_monitor-0.1.8.tar.gz |
|---|---|
| Size | 26.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6d8531732e28d18afc2c640cb7885c7bd861e9dea4f5dd4474558ccc3b6e440f
|
|
BLAKE2b-256 checksum How to use checksums |
97217f5b3f524c81089008cbcd03351e8b6909ac8fff926a255cb5179504e01a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.11
|
Release files / nonebot_plugin_tieba_monitor-0.1.8-py3-none-any.whl
| Download URL | nonebot_plugin_tieba_monitor-0.1.8-py3-none-any.whl |
|---|---|
| Size | 26.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ee560cee7ee936fb76142e891fbcb9eefcb3c5060daadc830a3854c2bcd6bfed
|
|
BLAKE2b-256 checksum How to use checksums |
63c55d9f4a68a1a8ab25f93df95915dbbcc7491b44d46b3d20763f413bd24dd2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.11
|