做一个nonebot2的插件让它能够调用茉莉云api进行对话能够回复艾特他的人并且艾特一次后能够回复多次只发送插件文件
以下是一个使用茉莉云API进行对话的NoneBot2插件示例代码:
import aiohttp
import json
from nonebot import on_message, on_startswith, on_command
from nonebot.adapters.cqhttp import Bot, Event, MessageSegment, Message
# 在茉莉云官网申请的API账号信息
API_URL = "http://i.itpk.cn/api.php"
API_KEY = "your_api_key"
async def call_moliapi(question: str) -> str:
async with aiohttp.ClientSession() as session:
params = {
'question': question,
'api_key': API_KEY,
'limit': '8' # 控制茉莉云回复的条数
}
async with session.get(API_URL, params=params) as resp:
resp_text = await resp.text()
resp_json = json.loads(resp_text)
reply = resp_json['content']
return reply
async def call_moliapi_multi(questions: str) -> str:
reply = ''
async with aiohttp.ClientSession() as session:
for question in questions:
params = {
'question': question,
'api_key': API_KEY,
'limit': '8' # 控制茉莉云回复的条数
}
async with session.get(API_URL, params=params) as resp:
resp_text = await resp.text()
resp_json = json.loads(resp_text)
reply += resp_json['content'] + '\n'
return reply
chat = on_message()
@chat.handle()
async def handle_chat(bot: Bot, event: Event):
# 忽略非群聊消息
if event.is_privatechat:
return
# 获取艾特的人的QQ号
at_qq = event.get_user_id()
# 获取消息内容
message = event.get_message()
if isinstance(message, MessageSegment):
message = message.data['text']
# 调用茉莉云API进行对话
reply = await call_moliapi(message)
# 回复消息
await bot.send_group_msg(
group_id=event.group_id,
message=f"[CQ:at,qq={at_qq}] {reply}"
)
multi_chat = on_command('multi_chat', aliases={'多人对话'})
@multi_chat.handle()
async def handle_multi_chat(bot: Bot, event: Event):
# 获取艾特的人的QQ号
at_qq = event.get_user_id()
# 获取消息内容
message = event.get_message()
if isinstance(message, MessageSegment):
message = message.data['text']
# 将消息内容按换行符分割成多个问题
questions = message.split('\n')
# 调用茉莉云API进行对话
reply = await call_moliapi_multi(questions)
# 回复消息
await bot.send_group_msg(
group_id=event.group_id,
message=f"[CQ:at,qq={at_qq}] {reply}"
)
你可以将上述代码保存为一个Python文件,例如moli_chat.py,然后在NoneBot2的配置文件中将该插件启用。注意替换API_KEY为你在茉莉云官网申请的API密钥。
使用方式示例:
- 艾特机器人并发送消息:
@BotName 你好机器人将会调用茉莉云API进行对话,并回复艾特的人。 - 发送指令消息:
/multi_chat 问题1\n问题2\n问题3机器人将会将每个问题分别调用茉莉云API进行对话,并一次性回复多个问题的回复。
请注意,该插件使用了异步HTTP请求库aiohttp,你需要在你的NoneBot2环境中安装它。可以通过pip install aiohttp命令进行安装
原文地址: https://www.cveoy.top/t/topic/hTFo 著作权归作者所有。请勿转载和采集!