Nonebot QQ机器人插件六:随机笑话(语音)
QQ机器人插件六:随机笑话(语音)
1. 导入需要使用的包
import nonebotfrom nonebot import on_keyword # 事件响应器函数
from nonebot.typing import T_State #bot使用的对象和字典
from nonebot.adapters.onebot.v11 import Bot,Message,MessageSegment # #Message是使用cq码的必要函数
import requests
import json # 处理api返回的json数据
2. 事件响应器
想要机器人能识别消息的关键词,然后做出相应的相应,这里就需要注册一个事件响应器。本文使用的时间响应器的辅助函数是on_keyword
。
on_keyword: 创建消息关键词匹配事件响应器。
__plugin_name__ = 'joke'
__plugin_usage__ = '用法: 笑话,返回随机一则笑话。'joke = on_keyword({"笑话", "joke"})
3. 事件处理流程
如下所示,我们使用joke
响应器的handle
装饰器装饰了一个函数handle_joke。
handle()`是处理事件的主体部分,是事件处理的起点。
@joke.handle()
然后创建一个异步函数:
async def handle_joke(state: T_State):
然后创建一个获取音乐的函数:
async def get_joke():url = 'https://api.vvhan.com/api/joke?type=json'res = requests.get(url)result = json.loads(res.text)joke = result['joke']return joke
访问api并获取返回的json值,并转换为可读的格式。
{"success":true,"id":433,"title":"你咋不上天呢","joke":"有个脾气不好的老婆怎么办?中国现在这个国情,有老婆就不错了!你还想脾气好,你怎么不上天!"
}
4. 事件响应器操作
这里使用send
操作来发送信息,向用户回复一条消息。回复的方式或途径由协议适配器自行实现。
可以是 str
、Message
、MessageSegment
或 MessageTemplate
。
这个操作等同于使用 bot.send(event, message, **kwargs)
但不需要自行传入 event
。
@joke.handle()
async def handle_joke(bot: Bot, event: Event,state: T_State):text = await get_joke()msg = f"[CQ:tts,text={text}]" #将文本转换为语音await joke.send(Message(msg))
5. 完整代码
import nonebotfrom nonebot import on_keyword # 事件响应器函数
from nonebot.typing import T_State #bot使用的对象和字典
from nonebot.adapters.onebot.v11 import Bot,Message,MessageSegment,Event # #Message是使用cq码的必要函数
import requests
import json # 处理api返回的json数据__plugin_name__ = 'joke'
__plugin_usage__ = '用法: 笑话,返回随机一则笑话。'joke = on_keyword({"笑话", "joke"})@joke.handle()
async def handle_joke(bot: Bot, event: Event,state: T_State):text = await get_joke()msg = f"[CQ:tts,text={text}]"await joke.send(Message(msg))# 在这里编写获取具体笑话的函数
async def get_joke():url = 'https://api.vvhan.com/api/joke?type=json'res = requests.get(url)result = json.loads(res.text)joke = result['joke']return joke
6. 效果展示
Nonebot QQ机器人插件六:随机笑话(语音)相关推荐
- Nonebot QQ机器人插件三:王者荣耀猜英雄游戏
Nonebot QQ机器人插件三:王者荣耀猜英雄游戏 1. 数据录入 首先需要获取相应数据这里可以直接访问**「heros.xlsx」https://www.aliyundrive.com/s/3iN ...
- Nonebot QQ机器人插件五:随机网易云音乐
QQ机器人插件五:随机网易云音乐 1. 导入需要使用的包 import nonebotfrom nonebot import on_keyword # 事件响应器函数 from nonebot.typ ...
- Nonebot QQ机器人插件四:每日一图
QQ机器人插件四:每日一图 1. 导入需要使用的包 import nonebotfrom nonebot import on_keyword # 事件响应器函数 from nonebot.typing ...
- Nonebot QQ机器人插件九:qq群聊天记录词云图
QQ机器人插件九:qq群聊天记录词云图 1. 将实时聊天记录保存到数据库 安装数据库可自行到网上查找,本文仅使用mysql数据库为例.linux下mysql数据库安装可参考(59条消息) Linux安 ...
- Python实现快递查询-QQ机器人插件
目录 1.API接口请求 2.创建成新的QQ插件 Python实现快递查询功能.Python爬虫一直是一样好东西!只要想就可以爬取自己想要的对象!本次,将使用Python3.9即requests库AP ...
- 从零开始在服务器上搭建QQ机器人——插件(二)
一.简介 在做完基本构建之后,自己的机器人旧可以开始使用了,但是只有一个内置的/echo命令.功能不够丰富. 因此,需要安装插件来获得更多的功能. 二.配置 参照nonebot的官网,编写命令 | N ...
- qq机器人插件之奥运奖牌获得数量
在之前的文章讲到了如何制作机器人,传送门:qq机器人制作 今天呢,我来给大家分享一个插件,先看效果: 交流群:970353786,非诚勿扰. 源码如下: """ 作者:星 ...
- 【最新】QQ机器人插件
QQ机器人 前言 QQ机器人功能展示 一.如何白嫖(用别人的插件) 二.如何自力更生(自己写) 前言 本文旨在如何为你的QQ机器人添加插件,也就是添加机器人的功能.添加插件的方法有两种,一种是用别人写 ...
- qq机器人插件之舔狗日记
在之前的文章讲到了如何制作机器人,传送门:qq机器人制作 今天呢,我来给大家分享一个插件,先看效果: 交流群:970353786,非诚勿扰. 源码如下: from nonebot import on_ ...
最新文章
- maven mybatis mysql_Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问...
- [Ruby编程语言].弗拉纳根_松本行弘读书笔记
- HashSet和HashMap的区别
- 破解sina新浪邮箱密码
- Java访问权限的范围
- 【C++深度剖析教程39】实现C++数组类模板
- c语言休眠函数useconds类型,带你了解C语言中的Sleep函数(附代码)
- 上传图片插件鼠标手cursor:pointer;不生效
- 算法笔记--二分图判定
- 关于内存中栈和堆的区别[转]
- 《Cortex-M0权威指南》之体系结构---嵌套中断控制器(NVIC)
- mysql中清空数据库,并重置主键为1
- Kubernetes 上容器的启动顺序如何把控?
- 【JavaEE】第一章线程和多线程
- 密封橡胶圈尺寸缺陷视觉检测系统
- 转:红帽旗下Linux的版本说明RedHat、CentOS、Fedora、OEL等
- win2003服务器性能工具,WindowsServer 2003 Service Pack 1 支持工具
- 数据压缩实验5-JEPG解码
- 任务16:16_Flume案例_断点续传文件(案例测试)
- css 文字两端对齐