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操作来发送信息,向用户回复一条消息。回复的方式或途径由协议适配器自行实现。

可以是 strMessageMessageSegmentMessageTemplate

这个操作等同于使用 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机器人插件六:随机笑话(语音)相关推荐

  1. Nonebot QQ机器人插件三:王者荣耀猜英雄游戏

    Nonebot QQ机器人插件三:王者荣耀猜英雄游戏 1. 数据录入 首先需要获取相应数据这里可以直接访问**「heros.xlsx」https://www.aliyundrive.com/s/3iN ...

  2. Nonebot QQ机器人插件五:随机网易云音乐

    QQ机器人插件五:随机网易云音乐 1. 导入需要使用的包 import nonebotfrom nonebot import on_keyword # 事件响应器函数 from nonebot.typ ...

  3. Nonebot QQ机器人插件四:每日一图

    QQ机器人插件四:每日一图 1. 导入需要使用的包 import nonebotfrom nonebot import on_keyword # 事件响应器函数 from nonebot.typing ...

  4. Nonebot QQ机器人插件九:qq群聊天记录词云图

    QQ机器人插件九:qq群聊天记录词云图 1. 将实时聊天记录保存到数据库 安装数据库可自行到网上查找,本文仅使用mysql数据库为例.linux下mysql数据库安装可参考(59条消息) Linux安 ...

  5. Python实现快递查询-QQ机器人插件

    目录 1.API接口请求 2.创建成新的QQ插件 Python实现快递查询功能.Python爬虫一直是一样好东西!只要想就可以爬取自己想要的对象!本次,将使用Python3.9即requests库AP ...

  6. 从零开始在服务器上搭建QQ机器人——插件(二)

    一.简介 在做完基本构建之后,自己的机器人旧可以开始使用了,但是只有一个内置的/echo命令.功能不够丰富. 因此,需要安装插件来获得更多的功能. 二.配置 参照nonebot的官网,编写命令 | N ...

  7. qq机器人插件之奥运奖牌获得数量

    在之前的文章讲到了如何制作机器人,传送门:qq机器人制作 今天呢,我来给大家分享一个插件,先看效果: 交流群:970353786,非诚勿扰. 源码如下: """ 作者:星 ...

  8. 【最新】QQ机器人插件

    QQ机器人 前言 QQ机器人功能展示 一.如何白嫖(用别人的插件) 二.如何自力更生(自己写) 前言 本文旨在如何为你的QQ机器人添加插件,也就是添加机器人的功能.添加插件的方法有两种,一种是用别人写 ...

  9. qq机器人插件之舔狗日记

    在之前的文章讲到了如何制作机器人,传送门:qq机器人制作 今天呢,我来给大家分享一个插件,先看效果: 交流群:970353786,非诚勿扰. 源码如下: from nonebot import on_ ...

最新文章

  1. maven mybatis mysql_Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问...
  2. [Ruby编程语言].弗拉纳根_松本行弘读书笔记
  3. HashSet和HashMap的区别
  4. 破解sina新浪邮箱密码
  5. Java访问权限的范围
  6. 【C++深度剖析教程39】实现C++数组类模板
  7. c语言休眠函数useconds类型,带你了解C语言中的Sleep函数(附代码)
  8. 上传图片插件鼠标手cursor:pointer;不生效
  9. 算法笔记--二分图判定
  10. 关于内存中栈和堆的区别[转]
  11. 《Cortex-M0权威指南》之体系结构---嵌套中断控制器(NVIC)
  12. mysql中清空数据库,并重置主键为1
  13. Kubernetes 上容器的启动顺序如何把控?
  14. 【JavaEE】第一章线程和多线程
  15. 密封橡胶圈尺寸缺陷视觉检测系统
  16. 转:红帽旗下Linux的版本说明RedHat、CentOS、Fedora、OEL等
  17. win2003服务器性能工具,WindowsServer 2003 Service Pack 1 支持工具
  18. 数据压缩实验5-JEPG解码
  19. 任务16:16_Flume案例_断点续传文件(案例测试)
  20. css 文字两端对齐

热门文章

  1. 虚拟电话好处多 期待消费认同
  2. 承蒙各位看官 从今天开始 从此在此执笔!
  3. 字符串头文件包含函数
  4. 新时代来了,如何加速智能制造与智能生活?
  5. Python 在Windows上的注册表
  6. HI3518视频画面偏色解决办法小记
  7. 功放与预失真学习笔记
  8. C,C++网络编程实现图像实时传输
  9. 应用软件的日志系统的设计要求
  10. Python-Django毕业设计基于微信小程序订餐系统(程序+Lw)