Merge remote-tracking branch 'origin/master'

This commit is contained in:
SlyAimer 2025-01-16 17:09:04 +08:00
commit 2c846d3bf2
3 changed files with 114 additions and 10 deletions

119
README.md
View file

@ -16,7 +16,7 @@
- 多种个性化用法,如天气、每日运势(~~机器人时尚单品~~)、点歌、编辑个人待办等,后续功能开发中🔧 - 多种个性化用法,如天气、每日运势(~~机器人时尚单品~~)、点歌、编辑个人待办等,后续功能开发中🔧
- 使用轻量化数据库sqlite管理数据实现为每位用户单独存取数据🔍 - 使用轻量化数据库sqlite管理数据实现为每位用户单独存取数据🔍
<br>
## 🌈目前功能: ## 🌈目前功能:
@ -30,14 +30,14 @@
- [ ] 今日老婆 - [ ] 今日老婆
- [ ] 群老婆 - [ ] 群老婆
<br>
## 🛠️使用 ## 🛠️使用
- 关于Nonebot完整部署使用方法请查看[官方文档](https://nonebot.dev/) - 关于Nonebot完整部署使用方法请查看[官方文档](https://nonebot.dev/)
<br>
### ⚙️一、环境配置 ### ⚙️一、环境配置
@ -52,7 +52,9 @@ conda create --name chatbot python=3.11
或者将上述 *chatbot* 更换为你喜欢的名字。 或者将上述 *chatbot* 更换为你喜欢的名字。
<b>🚫注意:</b>机器人<b></b>支持<img alt="Static Badge" src="https://img.shields.io/badge/Python-3.13/+-blue">的发行版,推荐使用<img alt="Static Badge" src="https://img.shields.io/badge/Python-3.11%2F3.12-blue">
<br>
此机器人运行所需依赖已全部打包至***requirements.txt***,您只需回到项目根目录 此机器人运行所需依赖已全部打包至***requirements.txt***,您只需回到项目根目录
@ -64,7 +66,7 @@ pip install -r requirements.txt
安装所需依赖。 安装所需依赖。
<br>
**使用网易云点歌需要另外安装:** **使用网易云点歌需要另外安装:**
@ -72,11 +74,11 @@ pip install -r requirements.txt
npm install crypto-js npm install crypto-js
``` ```
<br>
### ✒️二、配置所需文件 ### ✒️二、配置所需文件
在一切开始前,你需要将项目根目录下的 [example.env.prod](example.env.prod)文件更名为<b><i>.env.prod</i></b>,这是机器人的账号配置文件。 在一切开始前,你需要将项目根目录下的[<b>example.env.prod</b>](example.env.prod)文件更名为<b><i>.env.prod</i></b>,这是机器人的账号配置文件。
``` ```
DRIVER=~fastapi+~httpx+~websockets DRIVER=~fastapi+~httpx+~websockets
@ -99,7 +101,7 @@ QQ_BOTS='
``` ```
分别在id、token、secret处填写你的机器人ID机器人Token和Apple Secret需从[QQ开放平台](https://q.qq.com/)获取。 分别在id、token、secret处填写你的机器人ID机器人Token和Apple Secret需从[QQ开放平台](https://q.qq.com/)获取。
<br>
### 📍二、启动机器人 ### 📍二、启动机器人
@ -111,7 +113,7 @@ python bot.by
或者选择编译器启动,便可以启动机器人。 或者选择编译器启动,便可以启动机器人。
<br>
### 🗒️三、项目结构 ### 🗒️三、项目结构
@ -188,7 +190,106 @@ python bot.by
- 基本插件存储在qq_plugins目录中启动即可使用 - 基本插件存储在qq_plugins目录中启动即可使用
- 部分插件通过调用其它目录中的方法完成其功能 - 部分插件通过调用其它目录中的方法完成其功能
<br>
### 🎈四、更多功能 ### 🎈四、更多功能
#### 📲所有指令
机器人的指令列表在[<B>src/qq_plugins/check.py</B>](src/qq_plugins/check.py)中,有如下指令:
```python
menu = ['/今日运势','/天气','/图','/点歌','/摸摸头','/群老婆','/今日老婆', '/待办', '/test', '我喜欢你', "❤", "/待办查询", "/新建待办", "/删除待办"]
```
输入其它指令机器人会回复听不懂哦。
<br>
#### ☄️待办、摸一摸、今日运势的初始化
机器人中已经配置好数据库初始化的脚本。若您是第一次启动机器人。会在项目根目录下自动创建<b><i>chat_bot.db</i></b>(数据库文件)
chat_bot.db中包括六张表
```sql
--摸一摸文本数据
qr_touch
--摸一摸日志
qr_touch_log
--今日运势文本数据
qr_fortune
--今日运势日志,存储该用户是否已经查询过运势
qr_fortune_log
--用户列表
user_list
--用户待办表
user_todo_list
```
初始化相关脚本存放在 [<b>src/my_sqlite/data_init</b>](src/my_sqlite/data_init) 目录下。
每次启动机器人,程序会自动检查上述六张表是否存在,有表缺失则会在数据库中自动创建对应的表。
对已存在的表不做处理。
<br>
#### ⛅从图床发送图片
##### 介绍:
机器人支持[<b>SMMS图床</b>](https://sm.ms/)、[<b>聚合图床</b>](https://www.superbed.cn/)、从**本地**发送图片。
获取图片的方法统一编写在[<B>src/image/get_image.py</B>](src/image/get_image.py)下。
##### 使用:
首先找到[<b>src/image/config/image.yaml</b>](src/image/config/image.yaml)
```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替换上述<i>\<KEY></i>(可以根据自身需求选填)
之后在[<B>get_image.py</B>](src/image/get_image.py)中找到对应的方法,根据自身需求调用。
<br>
#### 🎵使用网易云API实现点歌
##### 介绍:
机器人支持在线点歌将音乐文件以QQ语音的形式发送至群聊。
快点一首你喜欢的歌给群友听吧!
<br>
*PC端QQ由于未知原因可能会出现播放失败的问题<u>这绝对不是咱的问题,绝对不是!</u>*
##### 使用:
若您是初次使用点歌功能,在群聊中@机器人后,机器人会提示:
```
登录失效,请联系管理员进行登录
```
此时会在[<b>src/music</b>](src/music)目录下生成一张<i><b>qrcode.png</b></i>,您需要使用手机端网易云音乐**扫码**该二维码,登录您的网易云账号。
<br>
<b>🚨注意:</b>目前点歌的实现方法为获取请求到的第一首歌,并且自动跳过无法下载(付费)歌曲,若您想点的歌原唱为付费,可能会随机到一首翻唱或其它版本。

View file

@ -58,6 +58,9 @@ def get_user_todo_list(member_openid):
result = session.execute(selectUserTodo, result = session.execute(selectUserTodo,
{'member_openid': member_openid}).fetchall() {'member_openid': member_openid}).fetchall()
session.close() session.close()
if str(result) == "[]":
return False
return result return result

View file

@ -17,7 +17,7 @@ async def show_todo_list(message: MessageEvent):
result = get_user_todo_list(member_openid) result = get_user_todo_list(member_openid)
if result is False: if result is False:
await get_todo_list.finish("您还未创建任何待办\n尝试使用 /新建待办 创建一份吧") await get_todo_list.finish("\n您还未创建待办\n使用 /新建待办 创建一份吧")
todo_list = "" todo_list = ""
count = 0 count = 0