mirror of
https://github.com/ClovertaTheTrilobita/SanYeCao-Nonebot.git
synced 2026-04-01 22:04:51 +00:00
一个基于Nonebot+官方API的QQ群聊机器人
| node_modules | ||
| src | ||
| .gitignore | ||
| bot.py | ||
| example.env.prod | ||
| package-lock.json | ||
| package.json | ||
| pyproject.toml | ||
| README.md | ||
| requirements.txt | ||
SanYeCao-Nonebot
📚介绍
🌟三叶草bot 2.0🌟
🚀使用Nonebot2+官方API搭建的QQ群聊机器人🚀
🔖亮点
- 基于Nonebot2,使用QQ官方API,更稳定、高效✨
- 多种个性化用法,如天气、每日运势(
机器人时尚单品)、点歌、编辑个人待办等,后续功能开发中🔧 - 使用轻量化数据库sqlite管理数据,实现为每位用户单独存取数据🔍
🌈目前功能:
- 待办
- 天气
- 今日运势
- 点歌(网易云 需扫码登录 在 src\music 目录下)PC端 QQ可能播放不出来 原因不明
- 图(返回图库中的图片)
- 摸摸头(待实现动图)
- 今日老婆
- 群老婆
🛠️使用
- 关于Nonebot完整部署使用方法,请查看官方文档
⚙️一、环境配置
我们强烈建议您使用虚拟环境,若您使用Anaconda发行版,请在终端输入
conda create --name chatbot python=3.11
创建conda环境。
或者将上述 chatbot 更换为你喜欢的名字。
🚫注意:机器人不支持的发行版,推荐使用
此机器人运行所需依赖已全部打包至requirements.txt,您只需回到项目根目录
在终端输入:
pip install -r requirements.txt
安装所需依赖。
使用网易云点歌需要另外安装:
npm install crypto-js
✒️二、配置所需文件
在一切开始前,你需要将项目根目录下的 example.env.prod文件更名为.env.prod,这是机器人的账号配置文件。
DRIVER=~fastapi+~httpx+~websockets
QQ_IS_SANDBOX=false
QQ_BOTS='
[
{
"id": "xxx",
"token": "xxx",
"secret": "xxx",
"intent": {
"c2c_group_at_messages": true
},
"use_websocket": false
}
]
'
分别在id、token、secret处填写你的机器人ID,机器人Token和Apple Secret,需从QQ开放平台获取。
📍二、启动机器人
在项目根目录中,找到 bot.py ,在终端输入
python bot.by
或者选择编译器启动,便可以启动机器人。
🗒️三、项目结构
└─src
├─common_plugins
│ ├─cloud_music
│ │
│ └─img
│
├─image
│ │ get_image.py
│ │
│ ├─config
│ │ image.yaml
│ │
│ ├─MaoYuNa
│ │
│ ├─tarot
│ ├─sideTarotImages
│ │
│ └─TarotImages
│
├─music
│ │ qrcode.png
│ │
│ ├─cloud_music
│ │ agent.py
│ │ cloud_music.py
│ │ jsdm.js
│ │
│ └─netease_music
|
├─my_sqlite
│ │ chat_bot.db
│ │ fortune_by_sqlite.py
│ │ todo_by_sqlite.py
│ │ touch_by_sqlite.py
│ │
│ ├─data_init
│ chat_bot.db
│ data_init.py
│ fortune_init_data.py
│ todo_init.py
│ touch_init_data.py
│
│
├─onebot_plugins
│ │ tarot.py
│ │ test.py
│ │ welcome.py
│ │
│ └─config
│ controller.yaml
│
├─plugins
│
└─qq_plugins
│ check.py
│ cloudMusic.py
│ fortune.py
│ image.py
│ today_wife.py
│ touch.py
│ to_do.py
│ weather.py
│
├─data_init
│
├─test
a-testMain.py
- 基本插件存储在qq_plugins目录中,启动即可使用
- 部分插件通过调用其它目录中的方法完成其功能
🎈四、更多功能
☄️待办、摸一摸、今日运势的初始化
机器人中已经配置好数据库初始化的脚本。若您是第一次启动机器人。会在项目根目录下自动创建chat_bot.db(数据库文件)
chat_bot.db中包括六张表:
--摸一摸文本数据
qr_touch
--摸一摸日志
qr_touch_log
--今日运势文本数据
qr_fortune
--今日运势日志,存储该用户是否已经查询过运势
qr_fortune_log
--用户列表
user_list
--用户待办表
user_todo_list
初始化相关脚本存放在 /src/my_sqlite/data_init 目录下。
每次启动机器人,程序会自动检查上述六张表是否存在,有表缺失则会在数据库中自动创建对应的表。
对已存在的表不做处理。
⛅从图床发送图片
介绍:
获取图片的方法统一编写在src/image/get_image.py下。
使用:
首先找到src/image/config/image.yaml
image:
app_id: "<KEY>"
image_local_qq_image_path: "src/image/qq_image"
image_local_path: "src/image/MaoYuNa"
#SMMS图床相关配置
smms_token: "<KEY>" # sm.ms图床的token
smms_image_upload_history: "https://sm.ms/api/v2/upload_history" # sm.ms图床获取上传图片历史API地址
#聚合图床相关配置
ju_he_token: "<KEY>" # 聚合图床的token
ju_he_image_list: "https://api.superbed.cn/timeline" # 聚合图床获取上传图片历史API地址
将你的机器人app_id,smms图床Token和聚合图床Token替换上述<KEY>(可以根据自身需求选填)
之后在get_image.py中找到对应的方法,根据自身需求调用。