NoneBot2 插件:茉莉云对话机器人,支持艾特回复和多次对话
{/'config.py/': /'from nonebot.default_config import *//n//nSUPERUSERS = {123456789} # 这里填入你的QQ号,作为机器人的超级用户//n//nCOMMAND_START = {'', '/', '!', '/', '!'} # 命令前缀,可根据自己的喜好修改//n//nNICKNAME = {'bot'} # 机器人的昵称,用于艾特和回复//n//nAPI_KEY = '你的API_KEY' # 茉莉云API的KEY,需要自行申请//n//nGROUP_LIST = [123456789, 987654321] # 允许调用机器人的群号列表//n/', /'init.py/': /'from nonebot import on_command, CommandSession//nfrom nonebot import on_natural_language, NLPSession, IntentCommand//nimport requests//nimport json//n//nfrom .config import API_KEY, NICKNAME, GROUP_LIST//n//n//n@on_command('chat', aliases=('闲聊', '对话'), only_to_me=False)//nasync def chat(session: CommandSession)://n # 判断是否在允许调用机器人的群中//n group_id = session.ctx.get('group_id', None)//n if group_id not in GROUP_LIST://n return//n//n # 获取用户输入的对话内容//n text = session.state.get('text', session.current_arg)//n if not text://n await session.send('请说出你想对我说的话~')//n return//n//n # 调用茉莉云API进行对话//n api_url = f'http://i.itpk.cn/api.php?question={text}&api_key={API_KEY}'//n response = requests.get(api_url)//n data = json.loads(response.text)//n//n # 获取回复的对话内容//n reply = data['content']//n if not reply://n await session.send('我好像迷失在无边的网络中了,你能再说一次吗?')//n return//n//n # 艾特回复的对象//n at_sender = session.ctx.get('message_type') == 'group'//n nickname = NICKNAME[0] if at_sender else NICKNAME[1]//n//n # 发送回复消息//n await session.send(f'@{nickname} {reply}', at_sender=at_sender)//n//n//n@chat.args_parser//nasync def _(session: CommandSession)://n # 去掉命令前缀//n stripped_arg = session.current_arg_text.strip()//n if session.is_first_run://n if stripped_arg://n session.state['text'] = stripped_arg//n return//n//n if not stripped_arg://n session.pause('要说的话不能为空呢,请重新输入')//n session.state[session.current_key] = stripped_arg//n//n//n@on_natural_language(keywords=NICKNAME, only_to_me=False)//nasync def _(session: NLPSession)://n # 判断是否在允许调用机器人的群中//n group_id = session.ctx.get('group_id', None)//n if group_id not in GROUP_LIST://n return//n//n # 获取用户输入的对话内容//n text = session.msg_text.strip()//n if not text://n return//n//n # 调用茉莉云API进行对话//n api_url = f'http://i.itpk.cn/api.php?question={text}&api_key={API_KEY}'//n response = requests.get(api_url)//n data = json.loads(response.text)//n//n # 获取回复的对话内容//n reply = data['content']//n if not reply://n return//n//n # 艾特回复的对象//n at_sender = session.ctx.get('message_type') == 'group'//n nickname = NICKNAME[0] if at_sender else NICKNAME[1]//n//n # 构造意图命令//n return IntentCommand(90, f'chat', current_arg=reply or '', args={'text': reply})//n/
原文地址: https://www.cveoy.top/t/topic/pCJM 著作权归作者所有。请勿转载和采集!