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__ = 'music'
__plugin_usage__ = '用法: 音乐,返回随机一首音乐。'music = on_keyword({"音乐", "网易云","music","听歌"})

3. 事件处理流程

如下所示,我们使用music响应器的handle装饰器装饰了一个函数handle_songhandle()是处理事件的主体部分,是事件处理的起点。

@music.handle()

然后创建一个异步函数:

async def handle_song(state: T_State):

然后创建一个获取音乐的函数:

async def get_song():url = 'https://api.vvhan.com/api/rand.music?type=json&sort=热歌榜'res = requests.get(url)result = json.loads(res.text)mp3 = result['info']['mp3url']#song = f"[CQ:record,file={mp3}]"return mp3

访问api并获取返回的json值,并转换为可读的格式。

{'success': True, 'sort': '热歌榜', 'info': {'id': 419375250, 'name': '月亮之矢', 'auther': '孤矢', 'picUrl': 'https://p4.music.126.net/i7gE7HVrqcAO_0Y--Znc6Q==/17812088370080434.jpg', 'mp3url': 'https://m801.music.126.net/20220810105659/a1e6bfdcc38aaebee6d8aaf617c3c606/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/14096495888/7577/6ddd/2618/7b8330b37a6b9791f0b88f4ba68972e8.mp3'}
}

4. 事件响应器操作

这里使用send操作来发送信息,向用户回复一条消息。回复的方式或途径由协议适配器自行实现。

可以是 strMessageMessageSegmentMessageTemplate

这个操作等同于使用 bot.send(event, message, **kwargs) 但不需要自行传入 event

await music.send(MessageSegment.record(song))

5. 安装ffmpeg音视频转换工具

不安装`ffmpeg`是无法成功发出语音视频等类型的消息。
  1. 下载ffmpeg的安装包

首先,进入ffmpeg的官网Download FFmpeg,这里以Windows为例。

  1. 解压文件

进入bin目录,可以看见三个这样的文件:

  1. 设置系统环境变量

点击搜索栏,搜索高级系统设置。

确定后,进入环境变量-》系统环境变量,选择path,点击编辑-》新建,把第一步bin的文件路径粘贴进去即可。

  1. 测试是否安装成功

win + R 打开运行,输入cmd打开命令行窗口。

输入命令ffmpeg –version,有输出信息,则安装成功。

6. 完整代码

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数据__plugin_name__ = 'music'
__plugin_usage__ = '用法: 音乐,返回随机一首音乐。'music = on_keyword({"音乐", "网易云","music","听歌"})@music.handle()
async def handle_song(state: T_State):song = await  get_song()await music.send(MessageSegment.record(song))# 在这里编写获取具体音乐的函数
async def get_song():url = 'https://api.vvhan.com/api/rand.music?type=json&sort=热歌榜'res = requests.get(url)result = json.loads(res.text)mp3 = result['info']['mp3url']return mp3

7. 结果展示

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.ty ...

  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. 在应用开发中,网易云音乐如何兼顾质量和效益

    在应用开发中,质量和效益是非常关键的因素.网易云音乐作为用户人数突破4亿,成就移动音乐传奇的应用,是如何在开发中兼顾质量和效益的?网易云音乐Android负责人梁建将为您解读. 框架赋能 典型的开发框 ...

  6. Python数据分析初探项目 基于Python数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022年)

    Python 数据分析初探项目 基于 Python 数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022 年) Python 数据分析初探项目 基于 Python 数据可 ...

  7. 在应用开发中,网易云音乐如何兼顾质量和效益 1

    在应用开发中,质量和效益是非常关键的因素.网易云音乐作为用户人数突破4亿,成就移动音乐传奇的应用,是如何在开发中兼顾质量和效益的?网易云音乐Android负责人梁建将为您解读. 框架赋能 典型的开发框 ...

  8. 网易云音乐基于 Flink + Kafka 的实时数仓建设实践

    简介:本文由网易云音乐实时计算平台研发工程师岳猛分享,主要从以下四个部分将为大家介绍 Flink + Kafka 在网易云音乐的应用实战: 背景.Flink + Kafka 平台化设计.Kafka 在 ...

  9. flink source 同步_网易云音乐基于 Flink + Kafka 的实时数仓建设实践

    简介:本文由网易云音乐实时计算平台研发工程师岳猛分享,主要从以下四个部分将为大家介绍 Flink + Kafka 在网易云音乐的应用实战: 背景.Flink + Kafka 平台化设计.Kafka 在 ...

最新文章

  1. poj 2069 Super Star 最小求覆盖【爬山算法】
  2. 【Knockout】二、监控属性Observables
  3. c# OpenRead 请求被中止: 未能创建 SSL/TLS 安全通道。
  4. YUV格式学习:YUV420P、YV12、NV12、NV21格式转换成RGB24
  5. 多媒体指令(内存拷贝加速)
  6. 因服务器配置不当,热门直播平台 Twitch 的125GB 数据和源代码被泄露
  7. linux特殊权限SUID,SGID和SBIT的介绍
  8. 17张程序员壁纸推荐,是否有一张你喜欢的?
  9. java局域网发送文件_Java如何实现局域网文件传输代码案例分享
  10. [指导]HP ProBook/EliteBook/Zbook系列笔记本clover安装黑苹果
  11. imp命令导入指定表_oracle 导入imp 命令
  12. kubelet liveness probe源码简析
  13. RN vivo访问相册失败 warning : User cancelled image selection
  14. javascript音乐播放器
  15. 拉普拉斯算子的疑惑--拉普拉斯算子作用于矢量和定义Hessian矩阵时遇到的问题
  16. python中的随机数种子seed()
  17. redis的MULTI与PIPELINE
  18. 每周分享第 12 期
  19. 南开大学工程训练结课报告
  20. 外挂:一个因“快感”而崛起的暴利行业

热门文章

  1. IO_FILE——FSOP、house of orange
  2. 沪江网校前端架构漫谈
  3. 如何通过fiddler来进行接口数据mock测试
  4. 关于创业公司初期的股份
  5. 华擎j3455装服务器系统,华擎J3455M主板u盘重装系统win8教程
  6. 用png格式图片和非png格式图片做水印图片
  7. 关于结构化,半结构化,非结构化数据的理解
  8. ps2口键盘改usb计算机设置,PS2接口键盘、鼠标改为USB接口
  9. 网上最全的系统服务想PF降到50以下(转)
  10. 江苏省盐城中学信息竞赛队(YZOI)队规