Skip to content

WncFht/QQ-Agent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QQ Agent

QQ Agent是一个基于NcatBot框架的QQ机器人,提供多种实用功能,包括链接管理、对联生成和表白功能。 后续会接入 RAG 功能以及 tool 功能,实现更加智能的对话和信息检索。

安装与运行

环境要求

  • Python 3.8+
  • 安装了napcat服务端

安装步骤

  1. 克隆仓库到本地:
git clone https://github.com/WncFht/QQ-Agent/tree/main
cd QQ-Agent
  1. 创建并激活虚拟环境(可选但推荐):
# 使用venv
python -m venv venv
# Windows激活
venv\Scripts\activate
# Linux/Mac激活
source venv/bin/activate

# 使用 conda 创建虚拟环境
conda create -n QQ-Agent python=3.12
conda activate QQ-Agent
  1. 安装依赖:
pip install -r requirements.txt
sh install.sh
  1. 配置机器人:

编辑bot/main.py文件,设置以下配置项:

CONFIG = {
    "ws_uri": "ws://localhost:3001",  # napcat服务器地址
    "admin_qq": ["你的QQ号"],  # 管理员QQ号列表
    "bot_qq": "机器人QQ号",  # 机器人QQ号
}
  1. 运行机器人:
python main.py

插件说明

NapcatBot支持以下插件:

  1. LinkManager - 链接管理插件

    • 添加、查看和搜索链接
    • 链接有效性检查
    • 群组隔离
  2. CoupletPlugin - 对联插件

    • 生成对联下联
    • 随机对联生成
  3. DeclarationPlugin - 表白插件

    • 生成随机表白语句
    • 指定表白对象
  4. ChatbotPlugin - 聊天机器人插件

    • 支持多种大语言模型 API(DeepSeek、GLM 等)
    • 支持群聊和私聊对话
    • 可通过 @API名称 指定使用的 API
  5. DailySummaryPlugin - 群聊日报总结插件

    • 自动记录群聊消息
    • 定时或手动触发群聊总结
    • 支持多种大语言模型 API
    • 可配置总结间隔和触发条件

使用方法

链接管理

/add <链接URL> [-d 描述] [-t 标签1,标签2] [-a|-u] - 添加或更新链接
/view <链接URL> - 查看链接详情
/search <关键词> [-t 标签] - 搜索链接
/check_links - 手动检查链接有效性

对联功能

对联 <上联> - 生成对应的下联
对对联 <上联> - 随机生成对应的下联

表白功能

表白 <对象> - 向指定对象表白

聊天机器人功能

@机器人 <内容> - 在群聊中与机器人对话
@机器人 @deepseek <内容> - 指定使用 DeepSeek API 回答
@机器人 @glm <内容> - 指定使用 GLM API 回答
私聊直接发送消息 - 在私聊中与机器人对话

群聊总结功能

总结 - 手动触发群聊总结(需要满足最小消息数量和时间间隔条件)

通用命令

/help - 查看所有可用指令
网站 - 获取技术分享网站链接
公告 - 查看群公告

链接管理系统

这是一个协作式的链接管理系统,允许多个用户共同维护和丰富链接资源。每个链接可以有多个用户的描述,并且支持标签系统进行分类。系统实现了严格的群组隔离,确保每个群只能访问其自己的链接资源。

基本概念

  1. 链接:每个链接都有一个创建者,创建时间,以及可选的标签和描述。同时包含链接状态信息,包括有效性检查结果和最后检查时间。
  2. 描述:每个用户可以为链接添加一个描述,描述包含内容、作者和时间戳。
  3. 标签:链接可以有多个标签,所有用户都可以为链接添加新标签。
  4. 群组隔离:每个链接都属于特定的群组,只能在该群组内访问和管理。
  5. 链接状态:系统会定期检查链接的有效性,并在链接失效时通知创建者。
  6. 权限
    • 所有用户都可以添加新链接
    • 用户只能编辑/更新自己的描述
    • 所有用户都可以为任何链接添加标签
    • 所有用户都可以查看本群内任何链接的完整信息
    • 链接仅在其所属群组内可见

命令列表

1. 添加或更新链接 (/add)

支持以下功能:

  1. 基本添加链接:
/add <链接URL>
  1. 添加链接和描述:
/add <链接URL> -d "这是一个描述"
  1. 添加链接、描述和标签:
/add <链接URL> -d "这是一个描述" -t "标签1,标签2,标签3"
  1. 追加新的描述(作为新用户):
/add <链接URL> -d "新的描述" -a
  1. 更新自己的描述:
/add <链接URL> -d "更新的描述" -u

参数说明:

  • -d--desc: 添加描述
  • -t--tags: 添加标签(用逗号分隔)
  • -a--append: 作为新用户添加描述
  • -u--update: 更新自己的已有描述

注意事项:

  • -a-u 是互斥的,不能同时使用
  • 使用 -u 时,必须是之前添加过描述的用户
  • 不使用任何参数时,默认会更新用户已有的描述,或作为新描述添加

2. 查看链接详情 (/view)

查看链接的完整信息:

/view <链接URL>

返回信息包括:

  • 链接URL
  • 创建者信息
  • 创建时间
  • 所有标签
  • 所有用户的描述(按时间顺序)

示例输出:

链接详情:
URL: https://example.com
创建者: 用户A
创建时间: 2024-03-11 23:00:04
标签: Python, 教程, 技术
状态: 失效
失效时间: 2024-03-12 10:00:00
原因: HTTP状态码: 404

描述列表:
1. 用户A (2024-03-11 23:00:04):
   这是一个很好的Python教程网站
2. 用户B (2024-03-11 23:05:04):
   特别推荐它的异步编程部分
3. 用户C (2024-03-12 10:00:00):
   代码示例非常清晰

3. 搜索链接 (/search)

支持以下功能:

  1. 基本关键词搜索:
/search <关键词>
  1. 按标签搜索:
/search <关键词> -t <标签>

搜索结果示例:

- https://example.com [标签: 技术, 教程]
  描述 (用户1): 这是第一个描述
  描述 (用户2): 这是追加的描述

- https://another-example.com [标签: 博客]
  描述 (用户3): 这是一个技术博客

数据结构

链接在JSON文件中的存储格式:

{
    "url": "https://example.com",
    "group_id": "1234567890",
    "creator_id": "2130212584",
    "creator_name": "创建者",
    "created_at": "2024-03-11 23:00:04",
    "last_checked": "2024-03-11 23:30:00",
    "is_valid": true,
    "status_message": "HTTP状态码: 200",
    "invalid_since": null,
    "tags": ["技术", "教程", "Python"],
    "descriptions": [
        {
            "content": "这是第一个描述",
            "user_id": "2130212584",
            "username": "用户1",
            "timestamp": "2024-03-11 23:00:04"
        },
        {
            "content": "这是另一个用户的描述",
            "user_id": "3456789012",
            "username": "用户2",
            "timestamp": "2024-03-11 23:05:04"
        }
    ]
}

链接有效性检查

系统会自动进行以下操作:

  1. 定期检查:每隔一小时自动检查所有链接的可访问性。
  2. 状态更新
    • 记录最后检查时间
    • 更新链接状态(有效/无效)
    • 记录状态信息(HTTP状态码或错误信息)
    • 记录失效时间(如果链接失效)
  3. 失效通知:当链接失效时,系统会自动通过私信通知链接创建者。

查看链接时(使用/view命令)会显示链接的状态信息:

链接详情:
URL: https://example.com
创建者: 用户A
创建时间: 2024-03-11 23:00:04
标签: Python, 教程, 技术
状态: 失效
失效时间: 2024-03-12 10:00:00
原因: HTTP状态码: 404

描述列表:
1. 用户A (2024-03-11 23:00:04):
   这是一个很好的Python教程网站

其他命令

网站命令

对于 "网站" 回复 https://wncfht.github.io/Awesome-Tech-Share/

公告命令

对于 "公告" 回复

1. 写文章、笔记、想法等等/分享资料
2. 总结主要内容,提取两三个关键词,附上链接发在群里,要求是便于他人查询即可。每周群主/管理员会同一收集更新到网站上
3.另外聊天讨论技术分享比较好的可以@群主/管理员收录

每周更新后会统一@所有人查看最新的提交记录

帮助命令

使用 /help 查看所有可用指令及其用法说明。

欢迎功能

当新用户进群时,机器人会发送欢迎消息:

欢迎你进入群聊!🎉🎉🎉

我是该群的机器人助手,这是我的使用帮助:

/help 查看所有可用指令
/add 添加链接
/search 搜索链接

聊天机器人系统

ChatbotPlugin 是一个基于大语言模型的聊天机器人插件,支持多种 API 接口,可以在群聊和私聊中提供智能对话服务。

基本功能

  1. 多 API 支持:支持 DeepSeek、GLM 等多种大语言模型 API,可以根据需要灵活切换。
  2. 群聊对话:在群聊中通过 @ 机器人触发对话。
  3. 私聊对话:在私聊中直接发送消息即可与机器人对话。
  4. 指定 API:可以通过 @api名称 格式指定使用特定的 API 进行回答。

配置说明

ChatbotPlugin 使用 .env 文件进行配置,支持以下配置项:

# DeepSeek API 配置
DEEPSEEK_API_KEY=your_deepseek_api_key_here
DEEPSEEK_BASE_URL=https://api.deepseek.com/v1/
DEEPSEEK_MODEL=deepseek-chat
DEEPSEEK_MAX_TOKENS=256
DEEPSEEK_TEMPERATURE=0.4

# GLM API 配置
GLM_API_KEY=EMPTY
GLM_BASE_URL=http://127.0.0.1:8000/v1/
GLM_MODEL=chatglm3-6b
GLM_MAX_TOKENS=256
GLM_TEMPERATURE=0.4
GLM_PRESENCE_PENALTY=1.2
GLM_TOP_P=0.8

# 默认使用的 API
DEFAULT_API=deepseek

首次运行时,插件会自动从 .env.example 创建 .env 文件,用户需要编辑该文件填入自己的 API 密钥。

使用方法

  1. 群聊对话

    @机器人 你好,请介绍一下自己
    
  2. 指定 API 对话

    @机器人 @deepseek 请解释一下量子计算的基本原理
    @机器人 @glm 写一首关于春天的诗
    
  3. 私聊对话: 直接在私聊中发送消息即可。

群聊日报总结系统

DailySummaryPlugin 是一个自动记录和总结群聊消息的插件,可以定时或手动触发生成群聊总结,帮助用户快速了解群聊中的重要讨论内容。

基本功能

  1. 消息记录:自动记录群聊消息,包括发言人、时间和内容。
  2. 定时总结:根据配置的时间间隔自动生成群聊总结。
  3. 手动触发:通过关键词手动触发群聊总结。
  4. 多 API 支持:支持多种大语言模型 API 生成总结内容。
  5. 历史记录:保存上次总结时间,避免重复总结。

配置说明

DailySummaryPlugin 使用 .env 文件和 config.json 进行配置:

.env 配置项

# DeepSeek API 配置
DEEPSEEK_API_KEY=your_deepseek_api_key_here
DEEPSEEK_BASE_URL=https://api.deepseek.com/v1/
DEEPSEEK_MODEL=deepseek-chat
DEEPSEEK_MAX_TOKENS=512
DEEPSEEK_TEMPERATURE=0.4

# GLM API 配置
GLM_API_KEY=EMPTY
GLM_BASE_URL=http://127.0.0.1:8000/v1/
GLM_MODEL=chatglm3-6b
GLM_MAX_TOKENS=256
GLM_TEMPERATURE=0.4

# 默认使用的 API
DEFAULT_API=deepseek

config.json 配置项

{
    "auto_summary_interval": 43200,  // 自动总结间隔,12小时(秒)
    "manual_summary_interval": 300,  // 手动总结间隔,5分钟(秒)
    "min_messages": 10,              // 最小消息数量
    "trigger_keywords": ["总结"],     // 触发关键词
    "storage_path": "message_logs",  // 消息存储路径
    "save_interval": 300             // 定期保存间隔(秒)
}

使用方法

  1. 手动触发总结: 在群聊中发送 总结 关键词,插件会检查是否满足总结条件(时间间隔和最小消息数量),如果满足则生成并发送总结。

  2. 自动总结: 插件会根据配置的时间间隔自动生成群聊总结,无需手动触发。

  3. 总结内容: 总结内容包括各个时间段内的主要讨论主题和重要互动,忽略无意义的闲聊,总结在 200 字以内。

待实现功能清单

1. 链接管理增强

  • 链接有效性检查
    • 定期检查链接是否可访问
    • 标记失效链接
    • 自动通知创建者链接失效

2. 聊天机器人增强

  • 记忆功能
    • 记住用户偏好和历史对话
    • 个性化回复
  • 多轮对话支持
    • 上下文理解
    • 连续对话能力
  • 知识库集成
    • 接入自定义知识库
    • 回答特定领域问题

3. 群聊总结增强

  • 总结模板定制
    • 支持不同风格的总结
    • 可配置总结长度和格式
  • 重要消息提取
    • 自动识别重要消息
    • 关键信息高亮
  • 多维度总结
    • 按主题分类总结
    • 按参与者分类总结

4. 群组功能增强

  • 群组管理功能
    • 管理员可以编辑/删除任何链接
    • 批量导入/导出功能
    • 定期数据备份

5. 数据分析与报告

  • 定期报告
    • 每日/周/月精选链接
    • 群聊活跃度分析
    • 话题热度统计

6. 高级功能

  • 链接内容预览
    • 自动提取网页标题和描述
    • 生成网页预览图
    • 显示网页favicon
  • 智能标签推荐
    • 基于链接内容自动推荐标签
    • 相似标签合并建议
    • 标签规范化
  • 搜索增强
    • 支持高级搜索语法
    • 搜索结果排序选项
    • 搜索历史记录
  • 多模态支持
    • 图像识别和处理
    • 语音转文字功能
    • 文字转语音功能

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published