Nonebot QQ机器人插件七:智能聊天机器人

QQ机器人插件七:智能聊天机器人

1. 使用智能聊天api

  • 搜索青云客网络青云客智能聊天机器人API (qingyunke.com),点击人工智能聊天。(实测智能回复问题不大,就是反应可能慢一点,而且如果一次给他发几条消息最多回复一条,消息发的太快,机器人也有可能漏掉消息,当然很大一部分可能是我程序的问题)

Nonebot QQ机器人插件七:智能聊天机器人_第1张图片
Nonebot QQ机器人插件七:智能聊天机器人_第2张图片

url : http://api.qingyunke.com/api.php?key=free&appid=0&msg=你好

2. 完整代码

import nonebot

from 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. 结果展示

Nonebot QQ机器人插件七:智能聊天机器人_第3张图片

4. 注意事项

在运行qq机器人的时候,如果没有处理好私聊和群聊的问题,一不小心消息可能就99+了,这里给出两种方法。

  1. 使用rule,rule设置为只有私聊或者直接艾特bot时才会生效。
例:
from nonebot.rule import to_me	#导入包
joke = on_keyword({"笑话", "joke"}, rule = to_me())

  1. 依赖注入的时候使用
    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

你可能感兴趣的:(qq机器人,json,python)