目录

  • 一、创建以及加载插件
  • 二、了解事件相应器
  • 三、编写插件
  • 四、实现智能回复
    • 1、API
    • 2 、词库
  • 五、附上教学源码

一、创建以及加载插件

在上一篇nonebot2配置的时候我们曾经在项目文件夹的src文件夹下创建了一个plugins文件夹。我们可以直接在这个文件夹下创建python文件编写代码,但是后期插件数量变多的时候plugins文件夹内会变得非常的杂乱,所以笔者建议每个插件单独创建一个文件夹,具体操作如下。
打开plugins文件夹,新建一个自命名文件夹。如图:

我这里创建了一个zdhf文件夹用于存放自动回复插件的py文件。但是由于原本的插件目录在plugins内,如果我们想让zdhf这个文件夹内的插件运行还需要修改一下bot.py的一些配置。

打开bot.py,在下面箭头位置添加

nonebot.load_plugins("src/plugins/zdhf")

这里的zdhf就是我们创建的zdhf文件夹,这样我们在这个文件夹内编写的py文件才能够被加载。

我们在zdhf文件夹下创建一个py文件,这样我们一个插件就已经成功创建并加载了。

nonebot2支持多种插件加载方式,具体可以参考官方文档。
官方文档-插件加载

二、了解事件相应器

官方文档-事件响应器
如果想了解的可以查阅官方文档,对于小白而言,从一个个的简单的范例可能更好的理解这些名词。

三、编写插件

代码解释:

首先导入模块,由于我们这里只需要完成自动回复,我们导入on_message模块。
至于on_message用法通过下面这个示例来理解。

from nonebot.adapters.cqhttp import Bot, Event
from nonebot.plugin import on_message

下面这部分是定义回复的内容,我这里选择字典来一一对应消息和回复。

#自定义回复词典
reply_dic = {'您好': '你也好' ,'早上好'  : '早上好~' ,'晚安'    : '做个好梦','我爱你'    :'我也爱你'
}

首先创建以一个名为reply的事件,事件类型为on_message(消息事件响应器即机器人通过接受的消息进行处理反馈)括号里的priority为优先级,事件响应器的优先级代表事件响应器的执行顺序,同一优先级的事件响应器会 同时执行!,优先级数字越小越先响应!优先级请从 1 开始排序!

通俗理解就是,如果我想让一个优先级为99这个插件收到1+1时回复2,让优先级为100的插件回复3,那么系统会通过判断优先级来选择先发送2还是3,很显然会先发送2因为它的优先级更高。

reply = on_message(priority=100)

现在我们创建了reply事件,因为我们想让其完成自动回复消息的功能。
于是我们选择三种事件处理函数装饰器之一的handle()
对于事件处理函数装饰器可以参考官方文档:
官方文档-事件处理函数装饰器
具体用法如代码所示:

@reply.handle()

这里我定义了函数 reply_handle,他们被事件响应器的装饰器装饰从而成为事件响应器的事件处理函数。
定义函数的格式为:async def 函数名(bot: Bot, event: Event)

下面是函数内部代码解释:
由于我们目的是自动回复,那么则要首先获取QQ消息,
使用event.get_message()这个固定函数获取到QQ信息并转化为字符串,设为变量user_msg
下面判断获取的QQ信息是否在上面定义的自动回复字典内,如果在则发送字典对应的内容。
发送函数: await reply.finish(reply_msg)这里的reply_msg是我们想发送的消息内容,reply是我们上面定义的事件名称,finish表示事件到这结束。await可以理解为固定格式,如果想深入研究可以学习asyncio

 user_msg = str(event.get_message()).strip()#对输入进行判断并处理try:reply_msg = reply_dic[user_msg]await reply.finish(reply_msg)except KeyError:await reply.finish()

此时我们已经完成了一个简单的自动回复机器人,我们启动机器人,发现机器人已经可以按照我们指定的要求回复了。

四、实现智能回复

由于我们在上面代码中设置的自动回复字典词汇量很少,很难实现智能的消息回复,如果想要实现智能化的回复可以有两种方式实现,使用API和添加词库。下面提供几种已知的API,如有其他好用的其他API可以在评论区留言:

1、API

青云客
小i机器人
小i机器人虽然不是api,但是可以通过爬虫抓包使用
天行API
收费
图灵机器人
收费,但是体验最好

2 、词库

百度云盘提取链接:https://pan.baidu.com/s/1gkAsFRF1EWnfMnVaRtGA_g
提取码:CR77

五、附上教学源码

from nonebot.adapters.cqhttp import Bot, Event
from nonebot.plugin import on_message#自定义回复词典
reply_dic = {'您好': '你也好' ,'早上好'  : '早上好~' ,'晚安'    : '做个好梦','我爱你'    :'我也爱你'
}
#回复部分
reply = on_message(priority=100)
@reply.handle()
async def reply_handle(bot: Bot, event: Event):user_msg = str(event.get_message()).strip()#对输入进行判断并处理try:reply_msg = reply_dic[user_msg]await reply.finish(reply_msg)except KeyError:await reply.finish()

需要功能完善的自动回复插件的评论区留下邮箱
上一篇:基于Nonebot2搭建QQ机器人(一)机器人环境配置。

基于Nonebot2搭建QQ机器人(二)编写一个自动回复插件相关推荐

  1. 基于Nonebot2搭建QQ机器人(一)机器人环境配置

    目录 一.Nonebot2介绍 二.Nonebot2安装 1.bot.py文件的配置 2..env文件的配置 3.env.dev文件配置 4.env.pord配置 三.go-cqhttp介绍 四.go ...

  2. 基于Nonebot2搭建QQ机器人(二):插件使用

    文章目录 Nonebot2创建插件 1. 插件简介 1.1 模块插件(单文件形式) 1.2 包插件(文件夹形式) 1.3 创建插件 2. 加载插件 2.1 直接加载 2.2 跨域加载 3. 插件配置 ...

  3. 用Nonebot2搭建QQ机器人(一):我的学习经历(一)

    1.NoneBot2的概述: NoneBot2 是一个现代.跨平台.可扩展的 Python 聊天机器人框架,它基于 Python 的类型注解和异步特性,能够为你的需求实现提供便捷灵活的支持.然后剩下的 ...

  4. 基于Mirai搭建QQ机器人监控B站直播

    搭建自定义Mirai机器人 周末本来想继续学Vue来着,这不又搞这个了,唉,这计划赶不上变化啊. 参考文档 mamoe/mirai: 高效率 QQ 机器人支持库 Gradle 下载的依赖jar包在哪? ...

  5. 从零开始基于nonebot2搭建Q群机器人自动获取各大平台热搜

    从零开始基于nonebot2搭建Q群机器人自动获取各大平台热搜 目录 从零开始基于nonebot2搭建Q群机器人自动获取各大平台热搜 安装步骤 使用方法 退出方法 启用方法 参考链接 安装步骤 安装步 ...

  6. 基于Nonebot2实现QQ聊天机器人商品查询【Nonebot插件教程】

    文章目录 前言 商品页面分析 插件编写 彩蛋 前言 本插件是基于Nonebot2 的QQ聊天机器人.通过集成京东商品爬虫,将京东网站中的优质产品推荐给用户,本文对京东官网源码信息进行了分析,并附上了完 ...

  7. 第一章:基于 SpringBoot 快速搭建QQ机器人,并监听群事件

    第一章:基于 SpringBoot 快速搭建QQ机器人 前言:知识与储备 这个QQ机器人能干什么? 第一步:搭建Maven项目环境 第二步:编写pom文件 第三步:编写启动类 第四步:创建配置文件 第 ...

  8. 「Java」基于Mirai的qq机器人开发踩坑笔记(其一)

    目录 0. 前置操作 I. 安装MCL II. MCL自动登录配置 III. 安装IDEA插件 1. 新建Mirai项目 2. 编写主类 3. 添加外部依赖 4. IDEA运行 5. 插件打包 6. ...

  9. 「Java」基于Mirai的qq机器人开发踩坑笔记(其二)

    目录 0. 配置机器人 1. onLoad方法 2. onEnable方法 3. 消息属性 4. 消息监听 I. 好友消息 II. 群聊消息 III. 无差别消息 5. 发送消息 I. 文本消息 II ...

  10. Python + Go-cqhttp + Pyqt5 —— 搭建QQ机器人

    搭建QQ机器人 Go-cqhttp 简介 兼容性 拓展支持 性能 下载安装 跳过启动的五秒延时 使用代码接收消息 测试[API文档](https://docs.go-cqhttp.org/api/) ...

最新文章

  1. Broadcast Receiver广播接收器
  2. ASP.NET MVC实践系列9-filter原理与实践
  3. rust大油田分解机_油田泥浆泵油田环保罐车配套泥浆泵
  4. java线程池【转】
  5. 关于小程序取data- 的值的问题
  6. python执行linux命令返回结果_python执行linux命令的简单示例
  7. ios多线程 -- NSOperation 简介
  8. javascript的性能优化
  9. 你真的了解iaas、PaaS、SaaS的区别吗?
  10. oracle百万级数据导入,用Perl从oracle导出百万级数据到excel
  11. 用ado.net取数据库中table、column的信息
  12. CocoaPods之Podfile\Podfile.lock
  13. POM文件Unknown报错
  14. python用均值填充空值_用平均值填充空值
  15. 在Cesium中实现与CAD的DWG图叠加显示分析
  16. 常用的集成TTL门电路
  17. VC++获取系统信息/获取OS/获取MAC/获取本地IP/判断是否为网吧
  18. python输出语句print(3+5)_Python 3 print 函数用法总结
  19. Ubuntu Firefox浏览器安装Flash插件
  20. 如何防止表单重复提交问题

热门文章

  1. 华为机试4.20:新员工考试
  2. 解决error: invalid operands of types ‘const char [6]‘ and ‘const char [6]‘ to binary ‘operator+‘
  3. mysql 迁移 myd_mysql文件*.opt *.frm *.MYI *.MYD的迁移
  4. NetWare 客户服务禁用了欢迎屏幕和快速切换恢复方法
  5. html caption 靠左,HTML caption align 属性
  6. 浅谈对于机器学习的理解
  7. CAD手机端怎么将DWG格式的图纸文件转换成PDF格式?
  8. 最牛最新奶粉事件“争抢奶粉互殴”值得我们大家去深思
  9. 吐槽 intent:#Intent;S.K_1171477665=;end
  10. 向工程腐化开炮|资源治理