feat(ai_chat): 使用AsyncOpenAI替换openai库并添加异步支持

feat(animetrace): 新增animetrace_search_by_url功能用于搜番
feat(image): 添加搜番功能并集成animetrace_search_by_url
chore(check): 更新菜单命令列表,添加搜番功能
This commit is contained in:
SlyAimer 2025-03-15 15:55:59 +08:00
parent a5d7a549f3
commit 5ae3d623a8
4 changed files with 38 additions and 13 deletions

View file

@ -0,0 +1,24 @@
import aiohttp
from src.configs.api_config import animetrace_url
async def animetrace_search_by_url(search_url):
data = {
'model': 'anime_model_lovelive',
'ai_detect':0,
'is_multi':1,
'url': search_url
}
sort,content = 1,""
async with aiohttp.ClientSession() as session:
async with session.post(animetrace_url, data=data) as response:
if response.status == 200:
result = await response.json()
for item in result['data'][0]['character']:
content += f"{sort} :作品名称:{item['work']}\n"
sort += 1
return content
else:
return None

View file

@ -1,4 +1,4 @@
import openai from openai import AsyncOpenAI as openai
import requests import requests
from src.clover_sqlite.models.chat import GroupChatRole from src.clover_sqlite.models.chat import GroupChatRole
from src.configs.api_config import v3url, v3key, deepseek_url, deepseek_key,silicon_flow_key from src.configs.api_config import v3url, v3key, deepseek_url, deepseek_key,silicon_flow_key
@ -39,7 +39,7 @@ async def deepseek_chat(group_openid,content):
openai.base_url = deepseek_url openai.base_url = deepseek_url
await GroupChatRole.save_chat_history(group_openid, {"role": "user", "content": content}) await GroupChatRole.save_chat_history(group_openid, {"role": "user", "content": content})
messages = await GroupChatRole.get_chat_history(group_openid) messages = await GroupChatRole.get_chat_history(group_openid)
completion = openai.chat.completions.create( completion = await openai.chat.completions.create(
model="deepseek-chat", model="deepseek-chat",
messages=messages, messages=messages,
stream=False stream=False

View file

@ -8,11 +8,11 @@ from src.clover_openai import ai_chat
from src.clover_sqlite.models.chat import GroupChatRole from src.clover_sqlite.models.chat import GroupChatRole
from src.clover_sqlite.models.user import UserList from src.clover_sqlite.models.user import UserList
menu = ["/重启","/今日运势","/今日塔罗","/图","/随机图","/日报","/点歌","/摸摸头","/群老婆","/今日老婆", "/开启ai","/关闭ai","/角色列表","/添加人设", "/更新人设", "/删除人设", "/切换人设", "/管理员注册", menu = ["/重启","/今日运势","/今日塔罗","/图","/随机图","/搜番","/日报","/点歌","/摸摸头","/群老婆","/今日老婆", "/开启ai","/关闭ai","/角色列表","/添加人设", "/更新人设", "/删除人设", "/切换人设", "/管理员注册",
"/待办", "/test","/天气","我喜欢你", "", "/待办查询", "/新建待办", "/删除待办" ,"/cf","/B站搜索", "/BV搜索", "/喜报", "/悲报", "/luxun","/鲁迅说", "/待办", "/test","/天气","我喜欢你", "", "/待办查询", "/新建待办", "/删除待办" ,"/cf","/B站搜索", "/BV搜索", "/喜报", "/悲报", "/luxun","/鲁迅说",
"/奶龙", "/repo", "/info", "/menu", "/轻小说","/本季新番","/新番观察","/绝对色感"] "/奶龙", "/repo", "/info", "/menu", "/轻小说","/本季新番","/新番观察","/绝对色感"]
send_menu = ["/menu","/今日运势","/今日塔罗","/图","/随机图","/日报","/点歌","/摸摸头","/群老婆","/待办","/天气", send_menu = ["/menu","/今日运势","/今日塔罗","/图","/随机图","搜番","/日报","/点歌","/摸摸头","/群老婆","/待办","/天气",
"/待办查询", "/新建待办", "/删除待办" ,"/cf","/B站搜索", "/BV搜索", "/喜报", "/悲报","/鲁迅说", "/待办查询", "/新建待办", "/删除待办" ,"/cf","/B站搜索", "/BV搜索", "/喜报", "/悲报","/鲁迅说",
"/轻小说","/本季新番","/新番观察","/绝对色感"] "/轻小说","/本季新番","/新番观察","/绝对色感"]

View file

@ -5,6 +5,7 @@ from nonebot.plugin import on_command
from nonebot.adapters.qq import MessageSegment,MessageEvent from nonebot.adapters.qq import MessageSegment,MessageEvent
from src.clover_image.get_image import get_image_names,get_anosu_image from src.clover_image.get_image import get_image_names,get_anosu_image
from src.clover_image.download_image import download_image from src.clover_image.download_image import download_image
from src.clover_image.animetrace import animetrace_search_by_url
from src.clover_image.delete_file import delete_file from src.clover_image.delete_file import delete_file
from src.configs.path_config import temp_path from src.configs.path_config import temp_path
@ -54,13 +55,13 @@ async def handle_function(message: MessageEvent):
# search_image = on_command("/搜图", rule=to_me(), priority=10, block=True) search_image = on_command("搜番", rule=to_me(), priority=10, block=False)
# @image.handle() @search_image.handle()
# async def handle_function(message: MessageEvent): async def handle_function(message: MessageEvent):
# if not message.attachments:
# filename = str(message.get_user_id()) + str(random.randint(0, 10000)) + ".jpg" await search_image.finish("没有图片捏,你想让我搜什么捏?")
# image_ptah = temp_path + filename result = await animetrace_search_by_url(message.attachments[0].url)
# if result is None:
# await download_image(message.attachments[0].url, image_ptah) await search_image.finish("未找到结果")
# await image.finish(MessageSegment.file_image(Path(image_ptah))) await search_image.finish(MessageSegment.text('\n 搜索结果\n'+result))