一个基于Nonebot+官方API的QQ群聊机器人
Find a file
SlyAimer 1d1634bb22 fix(requirements.txt): 添加 paramiko 依赖
在 requirements.txt 中添加了 paramiko 依赖,以支持 SSH 相关功能。
2025-02-15 14:56:28 +08:00
node_modules 网易云音乐接口更新 2025-01-16 00:45:24 +08:00
src Merge remote-tracking branch 'origin/master' 2025-02-15 14:50:55 +08:00
.gitignore 更新 gitignore 2025-02-14 10:43:36 +08:00
bot.py 整合文件夹名称 2025-02-06 16:00:21 +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 整合文件夹名称 2025-02-06 16:00:21 +08:00
README.md docs(README.md): 更新使用文档 2025-02-13 18:27:21 +08:00
requirements.txt fix(requirements.txt): 添加 paramiko 依赖 2025-02-15 14:56:28 +08:00

SanYeCao-Nonebot

📚介绍

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

Static Badge Static Badge last-commit Static Badge

🔖亮点

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

我是菜比🏳️🏳️纯新手写的python 问题肯定多 ,若有兴趣可以帮忙一起完善功能
QQ交流群710101225

  • ↑sly是代码领域大神 👈 ClovertaTheTrilobita 写的

🌈目前功能:

  • 待办
  • 天气
  • 今日运势
  • 今日塔罗
  • 点歌(网易云 需扫码登录 在 src\music 目录下)目前cookie过期检测有bug,出现播放不了需要吧cookie文件删掉
  • 图(返回图库中的图片)
  • 摸摸头
  • 接入语言模型
  • 搜索B站视频
  • 今日老婆
  • 群老婆

🛠️使用

  • 关于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

使用BV搜索B站视频需要另外安装Chrome Driver

安装教程:chromedriver下载与安装方法亲测可用-CSDN博客


✒️二、配置所需文件

在一切开始前,你需要将项目根目录下的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

或者选择编译器启动,便可以启动机器人。


🗒️三、项目结构

SanYeCao-Nonebot:.
│  .gitignore
│  bot.py
│  chat_bot.db
│  example.env.prod
│  package-lock.json
│  package.json
│  pyproject.toml
│  README.md
│  requirements.txt
│          
├─node_modules
│  └─crypto-js
│              
└─src
    ├─clover_image
    │          
    ├─clover_music
    │  ├─cloud_music         
    │  └─netease_music
    |
    ├─clover_openai
    │          
    ├─clover_sqlite
    │  ├─data_init      
    │  └─models
    │              
    ├─clover_videos
    │  └─billibili
    │              
    ├─configs
    │  └─utils
    │          
    ├─plugins
    │  └─test
    │          
    └─resources
        ├─font
        ├─image
        │  ├─codeforces
        │  ├─github_repo
        │  ├─good_bad_news
        │  ├─MaoYuNa
        │  ├─rua
        │  ├─tarot
        │  │  ├─sideTarotImages
        │  │  └─TarotImages
        │  └─who_say
        │          
        ├─log
        ├─temp
        └─videos
  • 基本插件存储在plugins目录中启动即可使用
  • 部分插件通过调用其它目录中的方法完成其功能

🎈四、更多功能

📲所有指令

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

menu = ['/今日运势','/今日塔罗','/图','/点歌','/摸摸头','/群老婆','/今日老婆', "/开启ai","/关闭ai","/角色列表","/添加人设", "/更新人设", "/删除人设", "/切换人设", "/管理员注册",'/待办', '/test','/天气','我喜欢你', "❤", "/待办查询", "/新建待办", "/删除待办" ,"/cf","/B站搜索", "/BV搜索", "/喜报", "/悲报", "/luxun","/鲁迅说","/奶龙", "/repo", "/info", "/menu"]

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


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

机器人中已经配置好数据库初始化的脚本。若您是第一次启动机器人。会在项目根目录下自动创建chat_bot.db(数据库文件)

chat_bot.db中包括11张表

--摸一摸文本数据
qr_touch
--摸一摸日志
qr_touch_log

--今日运势文本数据
qr_fortune
--今日运势日志,存储该用户是否已经查询过运势
qr_fortune_log

--塔罗牌
major_arcana
--塔罗牌使用 日志
major_arcana_log

--用户表
user_list
--用户待办表
user_todo_list

--群老婆
wife

--所有模型设定
chat_role
--群聊AI状态表
group_chat_role

数据库相关脚本存放在 src/clover_sqlite/models 目录下。我们使用Tortoise ORM管理数据库。

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

对已存在的表不做处理。


从图床发送图片

介绍:

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

获取图片的方法统一编写在src/clover_image/get_image.py下。

使用:

首先找到src/configs/api_config_example.py


app_id="<KEY>"
bot_account= "<KEY>"

"""
图床配置
"""
# 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语音的形式发送至群聊。

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


使用:

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

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

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


🚨注意:我们使用cookie存储用户登录信息所以会存在登录过期的情况若cookie过期机器人会提示

歌曲音频获取失败:登录信息失效。

此时需要删除cloud_music_cookies.cookie并重新扫码登录。


💡使用第三方语言模型

打开src/configs/api_config_example.py,找到

"""
AI
"""
admin_password= "123456" # 默认注册管理员密码
# 图灵机器人相关配置
v3url= "https://api.vveai.com/v1/chat/completions"
v3key= "<KEY>"
# DeepSeek相关配置
deepseek_url= "https://api.deepseek.com"
deepseek_key= "<KEY>"

将你自己的deepseek url和api填入并将文件重命名为chat_ai.yaml

再设置一个管理员认证密码,详见下一节


实现管理员身份认证

介绍:

机器人现已更新管理员机制,机器人管理员可以控制是否使用第三方大语言模型进行交互。

后续其它功能更新中。

使用:
1.注册为管理员

src/configs/api_config_example.py内,找到

admin_password= "123456" # 默认注册管理员密码

可以更改为自己的密码。


设置好密码后在qq中at你的机器人格式为

@<机器人名称> /管理员注册 <密码>

例如对三叶草进行管理员注册时假如密码是123456需要

@三叶草 /管理员注册 123456

🚨注意:管理员密码请不要泄露给其他人,建议定期更换密码。


注册成为管理员之后你的member_openid将会被保存至chatbot.db下的admin_list表中。


2.控制语言模型是否可用

在已经是管理员的情况下,你可以对机器人发送

@<机器人名称> /开启ai

实现对AI功能的开关。若此前AI功能处于关闭状态则机器人会回复

成功开启语言模型对话功能。一起来聊天吧~

表示AI功能启动成功。反之则回复

成功关闭语言模型对话功能。

AI功能为每个群单独启动默认关闭。


🔆CodeForces比赛查询

机器人通过访问CodeForces官方API实现获取CF近期比赛。

对机器人发送

/cf

可查询近期比赛。


📺B站视频搜索

介绍:

机器人使用哔哩哔哩视频API可将视频文件发送至群聊。

指令:

@<机器人名称> /BV搜索 <BV号>

🚨注意:由于QQ的限制官方bot无法发送时长超出2分钟的视频。

使用:

您需要首先确保自己的电脑安装了Chrome Driver

若没安装过,请参考教程:chromedriver下载与安装方法亲测可用-CSDN博客

程序第一次启动时会获取B站的cookie保存至本地使用selenium库完成下载可能较慢需要稍等一会儿。