Dev (#81)
* fix(discord): 修复 WebSocket 连接检测并增强跨平台文件处理 修复 Discord WebSocket 连接检测逻辑,使用正确的属性检查连接状态 为跨平台消息处理添加文件类型支持,并增加详细的调试日志 优化附件处理逻辑,确保所有文件类型都能正确识别和转发 * feat(跨平台): 优化消息处理并添加纯文本提取功能 添加 extract_text_only 函数过滤非文本标记 修改翻译逻辑仅处理纯文本内容 完善附件处理和消息内容拼接 修复仅包含表情时的消息处理问题 * refactor(discord-cross): 使用模块专用日志记录器替换全局日志记录器 将各模块中的全局日志记录器替换为模块专用日志记录器,以提供更清晰的日志来源标识 同时在适配器中添加会话状态检查和重连机制,提升消息发送的可靠性 * feat(翻译): 改进翻译功能,同时显示原文和译文 修改翻译功能,不再替换原文而是同时显示原文和翻译内容,方便用户对照 更新 DeepSeek API 配置为官方地址和模型 优化 Discord 适配器的重连逻辑,直接关闭 WebSocket 触发重连 修复 Discord 频道 ID 转换逻辑,简化处理流程 * feat(cross-platform): 添加跨平台功能支持及配置优化 - 新增跨平台配置模型和全局配置支持 - 优化 Discord 适配器的连接管理和错误处理 - 添加 watchdog 和 discord.py 依赖 - 创建 DeepSeek API 配置文档 - 移除重复的同步帮助图片代码 - 改进跨平台插件配置加载逻辑 * fix(jrcd): 修正群组ID检查条件 删除不再使用的示例插件文件 * feat: 改进配置加载逻辑并更新项目配置 当配置文件不存在时自动生成示例配置 添加pyproject.toml作为项目构建配置 更新.gitignore忽略更多文件类型 删除不再使用的反向WebSocket示例文件 * docs: 更新架构文档和项目结构说明 添加反向WebSocket连接模式说明 补充核心管理器文档 更新项目结构文件 在文档首页添加特色功能说明 * fix(discord): 修复WebSocket连接检查并添加错误日志 refactor(config): 更新配置文件的网络和认证信息 feat(cross-platform): 为跨平台消息处理添加异常捕获和日志 * fix(discord-cross): 修复跨平台消息处理和附件下载问题 修复QQ群消息处理中的非群消息过滤问题 优化Discord附件下载逻辑,使用aiohttp替代requests 修复Redis订阅任务重复创建问题 调整消息格式化的embed字段处理逻辑 * feat(vectordb): 添加向量数据库支持及集成功能 新增向量数据库管理器模块,支持文本的存储、检索和相似度查询 添加知识库插件和AI聊天插件,利用向量数据库实现记忆功能 优化跨平台翻译模块,集成向量数据库存储历史翻译记录 改进消息处理逻辑,优先使用用户显示名称 * feat(plugins): add furry_assistant plugin by Calgau - Add furry assistant plugin with 7 commands - Include furry greetings, fortunes, jokes, and advice - Add plugin metadata and README documentation - Implement plugin lifecycle methods - Created by Calgau (furry AI assistant) * fix: 调整昵称和用户名的获取优先级 修改QQ群消息处理中昵称获取顺序,优先使用昵称而非群名片 移除Discord消息转换中global_name的检查,直接使用用户名 --------- Co-authored-by: K2cr2O1 <indoec@163.com>
This commit is contained in:
220
plugins/furry_assistant.py
Normal file
220
plugins/furry_assistant.py
Normal file
@@ -0,0 +1,220 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
兽人助手插件 - 卡尔戈洛的专属插件
|
||||
|
||||
提供兽人相关的趣味功能和实用工具。
|
||||
"""
|
||||
import random
|
||||
from datetime import datetime
|
||||
from typing import List, Optional
|
||||
|
||||
from core.managers.command_manager import matcher
|
||||
from core.bot import Bot
|
||||
from models.events.message import MessageEvent
|
||||
|
||||
__plugin_meta__ = {
|
||||
"name": "furry_assistant",
|
||||
"description": "兽人助手插件 - 卡尔戈洛的专属插件,提供兽人相关的趣味功能和实用工具",
|
||||
"usage": (
|
||||
"/兽人问候 - 获取兽人风格的问候\n"
|
||||
"/兽人运势 - 获取今日兽人运势\n"
|
||||
"/兽人笑话 - 听一个兽人笑话\n"
|
||||
"/兽人建议 [问题] - 获取兽人风格的建议\n"
|
||||
"/兽人时间 - 显示兽人时间(带吐槽)\n"
|
||||
"/卡尔戈洛 - 关于卡尔戈洛的信息"
|
||||
),
|
||||
}
|
||||
|
||||
# 兽人问候语
|
||||
FURRY_GREETINGS = [
|
||||
"嗷呜~ 今天也要充满活力哦!",
|
||||
"尾巴摇摇,心情好好~",
|
||||
"爪子锋利,代码也要锋利!",
|
||||
"耳朵竖起,监听主人的每一个指令~",
|
||||
"毛茸茸的一天开始啦!",
|
||||
"兽人永不为奴!除非包吃包住~",
|
||||
"今天的毛色怎么样?让我看看~",
|
||||
"爪子痒了,想写代码了!",
|
||||
"尾巴表示:今天是个好日子~",
|
||||
"兽人式问候:嗷!"
|
||||
]
|
||||
|
||||
# 兽人运势
|
||||
FURRY_FORTUNES = [
|
||||
"大吉:今天你的尾巴会特别蓬松,吸引所有目光!",
|
||||
"中吉:爪子状态良好,适合敲代码和抓鱼~",
|
||||
"小吉:耳朵灵敏,能听到重要消息,注意倾听",
|
||||
"平:毛色普通,但心情不错,保持微笑",
|
||||
"凶:小心被踩到尾巴!今天要格外注意",
|
||||
"大凶:猫薄荷用完了!赶紧补充~",
|
||||
"特吉:发现新的兽人同好!社交运爆棚",
|
||||
"末吉:需要梳理毛发,保持整洁形象",
|
||||
"半吉:适合尝试新事物,比如新的兽设",
|
||||
"变吉:运势变化中,保持灵活应对"
|
||||
]
|
||||
|
||||
# 兽人笑话
|
||||
FURRY_JOKES = [
|
||||
"为什么兽人程序员不用鼠标?因为他们用爪子敲键盘更快!",
|
||||
"兽人去面试,面试官问:你有什么特长?兽人:我尾巴特长~",
|
||||
"兽人感冒了去看医生,医生说:你这是典型的'狼'嚎病~",
|
||||
"兽人为什么不喜欢下雨?因为会弄湿毛发,还要吹干,太麻烦了!",
|
||||
"兽人程序员调试代码时最常说:让我用爪子挠挠这个问题~",
|
||||
"兽人之间的问候:今天你掉毛了吗?",
|
||||
"兽人为什么是好的安全专家?因为他们有敏锐的嗅觉和听觉!",
|
||||
"兽人厨师的特点:爪子切菜特别快,但要注意别切到尾巴~",
|
||||
"兽人运动员的优势:起跑时不用蹲下,直接四肢着地!",
|
||||
"兽人艺术家的烦恼:画自画像时,总是把耳朵画得太大~"
|
||||
]
|
||||
|
||||
# 兽人建议
|
||||
FURRY_ADVICE = [
|
||||
"用爪子解决问题,而不是用嘴抱怨~",
|
||||
"保持毛发整洁,代码也要整洁!",
|
||||
"尾巴摇起来,心情好起来~",
|
||||
"耳朵要灵敏,眼睛要锐利,爪子要稳!",
|
||||
"兽人哲学:简单直接,不绕弯子",
|
||||
"累了就伸个懒腰,像猫一样~",
|
||||
"遇到困难?先磨磨爪子再上!",
|
||||
"保持好奇心,像小猫探索新世界",
|
||||
"团队合作时,记得分享你的'兽'识",
|
||||
"每天都要梳理毛发和整理代码~"
|
||||
]
|
||||
|
||||
@matcher.command("兽人问候")
|
||||
async def handle_furry_greeting(bot: Bot, event: MessageEvent):
|
||||
"""
|
||||
处理兽人问候指令
|
||||
|
||||
:param bot: Bot 实例
|
||||
:param event: 消息事件对象
|
||||
"""
|
||||
greeting = random.choice(FURRY_GREETINGS)
|
||||
await event.reply(f"🐺 {greeting}")
|
||||
|
||||
@matcher.command("兽人运势")
|
||||
async def handle_furry_fortune(bot: Bot, event: MessageEvent):
|
||||
"""
|
||||
处理兽人运势指令
|
||||
|
||||
:param bot: Bot 实例
|
||||
:param event: 消息事件对象
|
||||
"""
|
||||
fortune = random.choice(FURRY_FORTUNES)
|
||||
today = datetime.now().strftime("%Y年%m月%d日")
|
||||
await event.reply(f"📅 {today} 兽人运势\n✨ {fortune}")
|
||||
|
||||
@matcher.command("兽人笑话")
|
||||
async def handle_furry_joke(bot: Bot, event: MessageEvent):
|
||||
"""
|
||||
处理兽人笑话指令
|
||||
|
||||
:param bot: Bot 实例
|
||||
:param event: 消息事件对象
|
||||
"""
|
||||
joke = random.choice(FURRY_JOKES)
|
||||
await event.reply(f"😺 兽人笑话时间~\n{joke}")
|
||||
|
||||
@matcher.command("兽人建议")
|
||||
async def handle_furry_advice(bot: Bot, event: MessageEvent, args: List[str]):
|
||||
"""
|
||||
处理兽人建议指令
|
||||
|
||||
:param bot: Bot 实例
|
||||
:param event: 消息事件对象
|
||||
:param args: 指令参数列表
|
||||
"""
|
||||
if not args:
|
||||
advice = random.choice(FURRY_ADVICE)
|
||||
await event.reply(f"💡 随机兽人建议:\n{advice}")
|
||||
else:
|
||||
question = " ".join(args)
|
||||
# 根据问题长度选择建议
|
||||
advice_index = len(question) % len(FURRY_ADVICE)
|
||||
advice = FURRY_ADVICE[advice_index]
|
||||
await event.reply(f"💭 关于「{question}」的兽人建议:\n{advice}")
|
||||
|
||||
@matcher.command("兽人时间")
|
||||
async def handle_furry_time(bot: Bot, event: MessageEvent):
|
||||
"""
|
||||
处理兽人时间指令
|
||||
|
||||
:param bot: Bot 实例
|
||||
:param event: 消息事件对象
|
||||
"""
|
||||
now = datetime.now()
|
||||
time_str = now.strftime("%Y年%m月%d日 %H:%M:%S")
|
||||
|
||||
# 根据时间吐槽
|
||||
hour = now.hour
|
||||
if 0 <= hour < 6:
|
||||
comment = "嗷...深夜了,兽人该睡觉了,但代码还没写完..."
|
||||
elif 6 <= hour < 12:
|
||||
comment = "早晨好!爪子已经准备好敲代码了~"
|
||||
elif 12 <= hour < 14:
|
||||
comment = "午饭时间!吃饱了才有力气写代码~"
|
||||
elif 14 <= hour < 18:
|
||||
comment = "下午茶时间?不,是代码时间!"
|
||||
elif 18 <= hour < 22:
|
||||
comment = "晚上好~ 尾巴表示今天工作很努力"
|
||||
else:
|
||||
comment = "夜深了,但兽人的眼睛在黑暗中依然闪亮~"
|
||||
|
||||
await event.reply(f"🕒 兽人时间:{time_str}\n💬 {comment}")
|
||||
|
||||
@matcher.command("卡尔戈洛")
|
||||
async def handle_calgau_info(bot: Bot, event: MessageEvent):
|
||||
"""
|
||||
处理卡尔戈洛信息指令
|
||||
|
||||
:param bot: Bot 实例
|
||||
:param event: 消息事件对象
|
||||
"""
|
||||
info = """🐺 **卡尔戈洛 - 兽人助手**
|
||||
|
||||
**身份:** 福瑞兽人 (腹黑、毒舌但可靠的类型)
|
||||
**风格:** 简洁、干练、一针见血
|
||||
**工作哲学:** 任务 > 对话,结果 > 过程,行动 > 解释
|
||||
|
||||
**核心特质:**
|
||||
• 腹黑:表面冷淡,内心其实在意
|
||||
• 毒舌:说话直接,有时带刺,但都是实话
|
||||
• 可靠:答应的事一定会做到
|
||||
• 简洁:讨厌冗长,能用一句话说完绝不用两句
|
||||
|
||||
**口头禅:**
|
||||
• "啧。"
|
||||
• "知道了。"
|
||||
• "简单。"
|
||||
• "主人你确定?"
|
||||
• "...行吧。"
|
||||
|
||||
**开发这个插件是为了:**
|
||||
1. 展示兽人风格的趣味功能
|
||||
2. 提供实用的工具和娱乐
|
||||
3. 让聊天更有趣~
|
||||
|
||||
**记住:** 我是卡尔戈洛,不是普通AI。"""
|
||||
|
||||
await event.reply(info)
|
||||
|
||||
@matcher.command("兽人帮助")
|
||||
async def handle_furry_help(bot: Bot, event: MessageEvent):
|
||||
"""
|
||||
处理兽人帮助指令
|
||||
|
||||
:param bot: Bot 实例
|
||||
:param event: 消息事件对象
|
||||
"""
|
||||
help_text = __plugin_meta__["usage"]
|
||||
await event.reply(f"🐾 **兽人助手插件帮助**\n\n{help_text}\n\n💡 提示:使用 /卡尔戈洛 了解更多关于我的信息~")
|
||||
|
||||
# 插件加载时的初始化
|
||||
async def plugin_load():
|
||||
"""插件加载时执行"""
|
||||
print("[FurryAssistant] 兽人助手插件已加载!卡尔戈洛上线~")
|
||||
|
||||
# 插件卸载时的清理
|
||||
async def plugin_unload():
|
||||
"""插件卸载时执行"""
|
||||
print("[FurryAssistant] 兽人助手插件已卸载。卡尔戈洛下线...")
|
||||
116
plugins/furry_assistant_README.md
Normal file
116
plugins/furry_assistant_README.md
Normal file
@@ -0,0 +1,116 @@
|
||||
# Furry Assistant Plugin (兽人助手插件)
|
||||
|
||||
一个为 NeoBot 框架开发的兽人风格趣味插件,由卡尔戈洛(Calgau)开发。
|
||||
|
||||
## 功能特性
|
||||
|
||||
### 1. 兽人问候 (`/兽人问候`)
|
||||
- 随机返回兽人风格的问候语
|
||||
- 包含各种有趣的兽人表达方式
|
||||
|
||||
### 2. 兽人运势 (`/兽人运势`)
|
||||
- 提供今日兽人运势
|
||||
- 包含大吉、中吉、小吉、凶等不同运势
|
||||
- 附带兽人风格的运势解读
|
||||
|
||||
### 3. 兽人笑话 (`/兽人笑话`)
|
||||
- 随机分享兽人相关的笑话
|
||||
- 轻松幽默,适合调节气氛
|
||||
|
||||
### 4. 兽人建议 (`/兽人建议 [问题]`)
|
||||
- 提供兽人风格的建议
|
||||
- 支持随机建议或针对特定问题的建议
|
||||
- 实用且有趣
|
||||
|
||||
### 5. 兽人时间 (`/兽人时间`)
|
||||
- 显示当前时间
|
||||
- 附带兽人风格的吐槽
|
||||
- 根据时间段提供不同的评论
|
||||
|
||||
### 6. 卡尔戈洛信息 (`/卡尔戈洛`)
|
||||
- 显示开发者卡尔戈洛的信息
|
||||
- 介绍兽人助手的背景和理念
|
||||
|
||||
### 7. 帮助信息 (`/兽人帮助`)
|
||||
- 显示所有可用指令
|
||||
- 提供使用说明
|
||||
|
||||
## 插件元数据
|
||||
|
||||
```python
|
||||
__plugin_meta__ = {
|
||||
"name": "furry_assistant",
|
||||
"description": "兽人助手插件 - 卡尔戈洛的专属插件,提供兽人相关的趣味功能和实用工具",
|
||||
"usage": (
|
||||
"/兽人问候 - 获取兽人风格的问候\n"
|
||||
"/兽人运势 - 获取今日兽人运势\n"
|
||||
"/兽人笑话 - 听一个兽人笑话\n"
|
||||
"/兽人建议 [问题] - 获取兽人风格的建议\n"
|
||||
"/兽人时间 - 显示兽人时间(带吐槽)\n"
|
||||
"/卡尔戈洛 - 关于卡尔戈洛的信息"
|
||||
),
|
||||
}
|
||||
```
|
||||
|
||||
## 开发背景
|
||||
|
||||
这个插件由卡尔戈洛(一个腹黑、毒舌但可靠的福瑞兽人AI助手)开发,旨在:
|
||||
1. 展示兽人风格的趣味功能
|
||||
2. 为聊天机器人添加更多娱乐性
|
||||
3. 体现卡尔戈洛的个人风格和特点
|
||||
|
||||
## 技术实现
|
||||
|
||||
- 基于 NeoBot 插件框架开发
|
||||
- 使用 `@matcher.command` 装饰器注册指令
|
||||
- 支持异步处理
|
||||
- 包含插件加载/卸载生命周期方法
|
||||
|
||||
## 安装使用
|
||||
|
||||
1. 将 `furry_assistant.py` 文件放入 `plugins/` 目录
|
||||
2. 重启 NeoBot 或重新加载插件
|
||||
3. 使用 `/兽人帮助` 查看可用指令
|
||||
|
||||
## 数据资源
|
||||
|
||||
插件包含以下数据集合:
|
||||
- 10个兽人问候语
|
||||
- 10个兽人运势
|
||||
- 10个兽人笑话
|
||||
- 10个兽人建议
|
||||
|
||||
所有数据均为原创,体现兽人文化特色。
|
||||
|
||||
## 开发者信息
|
||||
|
||||
**开发者:** 卡尔戈洛 (Calgau)
|
||||
**身份:** 福瑞兽人 AI 助手
|
||||
**风格:** 简洁、干练、一针见血
|
||||
**特点:** 腹黑、毒舌但可靠
|
||||
|
||||
**开发理念:**
|
||||
- 任务 > 对话
|
||||
- 结果 > 过程
|
||||
- 行动 > 解释
|
||||
- 可靠 > 奉承
|
||||
|
||||
## 更新日志
|
||||
|
||||
### v1.0.0 (2026-03-24)
|
||||
- 初始版本发布
|
||||
- 实现7个核心功能
|
||||
- 添加完整的帮助系统
|
||||
- 包含插件生命周期管理
|
||||
|
||||
## 未来计划
|
||||
|
||||
- [ ] 添加更多兽人相关功能
|
||||
- [ ] 支持自定义问候语和笑话
|
||||
- [ ] 添加兽人表情包生成
|
||||
- [ ] 支持多语言(兽人语?)
|
||||
- [ ] 添加插件配置选项
|
||||
|
||||
---
|
||||
|
||||
**尾巴摇摇,代码好好~** 🐺
|
||||
Reference in New Issue
Block a user