QQ机器人插件七:智能聊天机器人
1. 使用智能聊天api
- 搜索青云客网络青云客智能聊天机器人API (qingyunke.com),点击人工智能聊天。(实测智能回复问题不大,就是反应可能慢一点,而且如果一次给他发几条消息最多回复一条,消息发的太快,机器人也有可能漏掉消息,当然很大一部分可能是我程序的问题)
url : http://api.qingyunke.com/api.php?key=free&appid=0&msg=你好
2. 完整代码
import nonebotfrom nonebot import on_keyword,on_message # 事件响应器函数
from nonebot.typing import T_State #bot使用的对象和字典
from nonebot.adapters.onebot.v11 import Bot, Message, MessageSegment, Event, PrivateMessageEvent # #Message是使用cq码的必要函数
from nonebot.rule import to_me
import requests
import json,urllib # 处理api返回的json数据
from urllib.request import urlopen__plugin_name__ = 'ai_talk'
__plugin_usage__ = '用法: 智能聊天。'ai_talk = on_message()@ai_talk.receive()
async def handle_talk(bot: Bot, event: PrivateMessageEvent, state: T_State):msg = str(event.get_message())url = f'http://api.qingyunke.com/api.php?key=free&appid=0&msg={msg}'res = requests.get(url)result = json.loads(res.text)content = result['content']await ai_talk.send(content)
3. 结果展示
4. 注意事项
在运行qq机器人的时候,如果没有处理好私聊和群聊的问题,一不小心消息可能就99+了,这里给出两种方法。
- 使用rule,rule设置为只有私聊或者直接艾特bot时才会生效。
例:
from nonebot.rule import to_me #导入包
joke = on_keyword({"笑话", "joke"}, rule = to_me())
- 依赖注入的时候使用
event: GroupMessageEvent或者PrivateMessageEvent,或者event: MessageEvent之后函数里
isinstance(event, GroupMessageEvent)。使用这种方法私聊只能私聊,在群里@也不会回复。
例:
from nonebot.adapters.onebot.v11 import Bot, Message, PrivateMessageEvent ,GroupMessageEvent@ai_talk.receive()
async def handle_talk(bot: Bot, event: PrivateMessageEvent, state: T_State):pass