一个基于Nonebot+官方API的QQ群聊机器人
Find a file
2025-01-17 18:43:00 +08:00
node_modules 网易云音乐接口更新 2025-01-16 00:45:24 +08:00
src 更新接入ai 2025-01-17 18:43:00 +08:00
.gitignore vveai 实现 2025-01-17 01:15:10 +08:00
bot.py 添加第一次启动初始化待办数据库功能 2025-01-16 01:16:53 +08:00
example.env.prod 摸摸头gif图实现 2025-01-16 17:07:05 +08:00
package-lock.json 网易云音乐接口更新 2025-01-16 00:45:24 +08:00
package.json 网易云音乐接口更新 2025-01-16 00:45:24 +08:00
pyproject.toml init 2025-01-14 15:09:00 +08:00
README.md Merge remote-tracking branch 'origin/master' 2025-01-16 17:09:04 +08:00
requirements.txt 更新示例 2025-01-16 23:43:45 +08:00

SanYeCao-Nonebot

📚介绍

🌟三叶草bot 2.0🌟
🚀使用Nonebot2+官方API搭建的QQ群聊机器人🚀

Static Badge Static Badge last-commitStatic Badge

🔖亮点

  • 基于Nonebot2,使用QQ官方API,更稳定、高效
  • 多种个性化用法,如天气、每日运势(机器人时尚单品)、点歌、编辑个人待办等,后续功能开发中🔧
  • 使用轻量化数据库sqlite管理数据实现为每位用户单独存取数据🔍

🌈目前功能:

  • 待办
  • 天气
  • 今日运势
  • 今日塔罗
  • 点歌(网易云 需扫码登录 在 src\music 目录下)PC端 QQ可能播放不出来 原因不明
  • 图(返回图库中的图片)
  • 摸摸头(待实现动图)
  • 今日老婆
  • 群老婆

🛠️使用

  • 关于Nonebot完整部署使用方法请查看官方文档

⚙️一、环境配置

我们强烈建议您使用虚拟环境若您使用Anaconda发行版请在终端输入

conda create --name chatbot python=3.11

创建conda环境。

或者将上述 chatbot 更换为你喜欢的名字。

🚫注意:机器人支持Static Badge的发行版,推荐使用Static Badge


此机器人运行所需依赖已全部打包至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": true
  }
]
'

分别在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目录中启动即可使用
  • 部分插件通过调用其它目录中的方法完成其功能

🎈四、更多功能

📲所有指令

机器人的指令列表在src/qq_plugins/check.py中,有如下指令:

menu = ['/今日运势','/天气','/图','/点歌','/摸摸头','/群老婆','/今日老婆', '/待办', '/test', '我喜欢你', "❤", "/待办查询", "/新建待办", "/删除待办"]

输入其它指令机器人会回复听不懂哦。


☄️待办、摸一摸、今日运势的初始化

机器人中已经配置好数据库初始化的脚本。若您是第一次启动机器人。会在项目根目录下自动创建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 目录下。

每次启动机器人,程序会自动检查上述六张表是否存在,有表缺失则会在数据库中自动创建对应的表。

对已存在的表不做处理。


从图床发送图片

介绍:

机器人支持SMMS图床聚合图床、从本地发送图片。

获取图片的方法统一编写在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_idsmms图床Token和聚合图床Token替换上述<KEY>(可以根据自身需求选填)

之后在get_image.py中找到对应的方法,根据自身需求调用。


🎵使用网易云API实现点歌

介绍:

机器人支持在线点歌将音乐文件以QQ语音的形式发送至群聊。

快点一首你喜欢的歌给群友听吧!


PC端QQ由于未知原因可能会出现播放失败的问题这绝对不是咱的问题,绝对不是!

使用:

若您是初次使用点歌功能,在群聊中@机器人后,机器人会提示:

登录失效,请联系管理员进行登录

此时会在src/music目录下生成一张qrcode.png,您需要使用手机端网易云音乐扫码该二维码,登录您的网易云账号。


🚨注意:目前点歌的实现方法为获取请求到的第一首歌,并且自动跳过无法下载(付费)歌曲,若您想点的歌原唱为付费,可能会随机到一首翻唱或其它版本。