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__ = 'music'
__plugin_usage__ = '用法: 音乐,返回随机一首音乐。'music = on_keyword({"音乐", "网易云","music","听歌"})
3. 事件处理流程
如下所示,我们使用music
响应器的handle
装饰器装饰了一个函数handle_song
。handle()
是处理事件的主体部分,是事件处理的起点。
@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
操作来发送信息,向用户回复一条消息。回复的方式或途径由协议适配器自行实现。
可以是 str
、Message
、MessageSegment
或 MessageTemplate
。
这个操作等同于使用 bot.send(event, message, **kwargs)
但不需要自行传入 event
。
await music.send(MessageSegment.record(song))
5. 安装ffmpeg音视频转换工具
不安装`ffmpeg`是无法成功发出语音视频等类型的消息。
- 下载
ffmpeg
的安装包
首先,进入ffmpeg
的官网Download FFmpeg,这里以Windows为例。
- 解压文件
进入bin
目录,可以看见三个这样的文件:
- 设置系统环境变量
点击搜索栏,搜索高级系统设置。
确定后,进入环境变量-》系统环境变量,选择path
,点击编辑-》新建,把第一步bin的文件路径
粘贴进去即可。
- 测试是否安装成功
按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机器人插件五:随机网易云音乐相关推荐
- 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.ty ...
- Nonebot QQ机器人插件四:每日一图
QQ机器人插件四:每日一图 1. 导入需要使用的包 import nonebotfrom nonebot import on_keyword # 事件响应器函数 from nonebot.typing ...
- Nonebot QQ机器人插件九:qq群聊天记录词云图
QQ机器人插件九:qq群聊天记录词云图 1. 将实时聊天记录保存到数据库 安装数据库可自行到网上查找,本文仅使用mysql数据库为例.linux下mysql数据库安装可参考(59条消息) Linux安 ...
- 在应用开发中,网易云音乐如何兼顾质量和效益
在应用开发中,质量和效益是非常关键的因素.网易云音乐作为用户人数突破4亿,成就移动音乐传奇的应用,是如何在开发中兼顾质量和效益的?网易云音乐Android负责人梁建将为您解读. 框架赋能 典型的开发框 ...
- Python数据分析初探项目 基于Python数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022年)
Python 数据分析初探项目 基于 Python 数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022 年) Python 数据分析初探项目 基于 Python 数据可 ...
- 在应用开发中,网易云音乐如何兼顾质量和效益 1
在应用开发中,质量和效益是非常关键的因素.网易云音乐作为用户人数突破4亿,成就移动音乐传奇的应用,是如何在开发中兼顾质量和效益的?网易云音乐Android负责人梁建将为您解读. 框架赋能 典型的开发框 ...
- 网易云音乐基于 Flink + Kafka 的实时数仓建设实践
简介:本文由网易云音乐实时计算平台研发工程师岳猛分享,主要从以下四个部分将为大家介绍 Flink + Kafka 在网易云音乐的应用实战: 背景.Flink + Kafka 平台化设计.Kafka 在 ...
- flink source 同步_网易云音乐基于 Flink + Kafka 的实时数仓建设实践
简介:本文由网易云音乐实时计算平台研发工程师岳猛分享,主要从以下四个部分将为大家介绍 Flink + Kafka 在网易云音乐的应用实战: 背景.Flink + Kafka 平台化设计.Kafka 在 ...
最新文章
- poj 2069 Super Star 最小求覆盖【爬山算法】
- 【Knockout】二、监控属性Observables
- c# OpenRead 请求被中止: 未能创建 SSL/TLS 安全通道。
- YUV格式学习:YUV420P、YV12、NV12、NV21格式转换成RGB24
- 多媒体指令(内存拷贝加速)
- 因服务器配置不当,热门直播平台 Twitch 的125GB 数据和源代码被泄露
- linux特殊权限SUID,SGID和SBIT的介绍
- 17张程序员壁纸推荐,是否有一张你喜欢的?
- java局域网发送文件_Java如何实现局域网文件传输代码案例分享
- [指导]HP ProBook/EliteBook/Zbook系列笔记本clover安装黑苹果
- imp命令导入指定表_oracle 导入imp 命令
- kubelet liveness probe源码简析
- RN vivo访问相册失败 warning : User cancelled image selection
- javascript音乐播放器
- 拉普拉斯算子的疑惑--拉普拉斯算子作用于矢量和定义Hessian矩阵时遇到的问题
- python中的随机数种子seed()
- redis的MULTI与PIPELINE
- 每周分享第 12 期
- 南开大学工程训练结课报告
- 外挂:一个因“快感”而崛起的暴利行业