nonebot2调用图片API发送随机图片

2023-10-19 13:10

本文主要是介绍nonebot2调用图片API发送随机图片,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

我们经常可以看到能够发送随机图片的QQ机器人,接下来我们会学习到如何编写这种插件

效果展示

正文

 图片API选择

图片API可以按照其返回数据的方式分成几种,我这里使用的API的类型是直接返回图片的URL,就比如说访问我自己部署的一个二次元图API:[https://api.sevin.cn/api/ecy.php](https://api.sevin.cn/api/ecy.php),他就会随机返回一张图片的URL,比如说:https://api.sevin.cn/api/img/ecy/ (17).jpg

另一种返回json格式的API的使用方法请看这篇文章:nonebot2调用json格式图片API发送随机图片

至于这种图片API怎么制作,大家可以看我的这篇文章:超简单随机图片API制作教程。或者你直接去网上找现成的这种类型的现成图片API也可以

插件编写

Step 1 定义命令

首先,我们需要定义插件命令,只有成功调用了命令,才能触发插件操作。在本插件中,我们使用 on_command 装饰器定义一个命令,当用户输入特定的命令时,机器人就会执行相应的操作。例如,我们定义命令为“二次元图”:

from nonebot import on_commandecyt = on_command('二次元图')

Step 2 编写插件逻辑

接下来,我们可以在 on_command 修饰器下使用 handle 装饰器来编写插件逻辑,当用户触发命令时,机器人就会执行相应的逻辑。在本插件中,我们需要从图片 API 获取随机图片的 URL,并将其发送给用户。

@ecyt.handle()
async def main():# 获取随机图片 URLmsg = await get_data()# 发送图片给用户await ecyt.finish(MessageSegment.image(msg))

在上面的代码中,我们定义了一个名为 main 的异步函数,使用 await get_data() 来获取随机图片网址,然后使用 await ecyt.finish()发送随机图片URL。

Step 3 调用图片 API

在 main 函数中,我们需要获取随机图片 URL,而我们可以使用 httpx 库中的异步函数异步获取图片 URL。在示例代码中,我们使用了一个图片 API,这个 API 它可以随机返回二次元图片的 URL。

async def get_data():url = 'https://api.sevin.cn/api/ecy.php'async with httpx.AsyncClient() as client:resp = await client.get(url)data = resp.text.strip()return data

在上述代码中,我们使用 httpx 库中的 AsyncClient() 来实现异步请求,发出 GET 请求,从 API 获取随机图片 URL,并返回响应内容。

Step 4 发送图片

在获得图片URL后,我们需要将其发送给用户。我们需要使用 nonebot.adapters.onebot.v11.message.MessageSegment 中的 image 函数。这个函数将 URL 转换成 Nonebot 内置的 image 消息段,使得机器人能够正确发送图片。

from nonebot.adapters.onebot.v11 import MessageSegmentawait ecyt.finish(MessageSegment.image(msg))

在上述代码中,我们调用了 MessageSegment.image 函数,并将获取到的图片 URL 作为参数传递给了它。最后,我们调用了 ecyt.finish() 函数,将消息发送给了用户。

Step 5 完整代码

将以上 Step 1 - Step 4 中的代码合并,便可得到本插件完整代码:

from nonebot import on_command
from nonebot.adapters.onebot.v11 import MessageSegment
import httpxecyt = on_command('二次元图')@ecyt.handle()
async def main():msg = await get_data()await ecyt.finish(MessageSegment.image(msg))async def get_data():url = 'https://api.sevin.cn/api/ecy.php'async with httpx.AsyncClient() as client:resp = await client.get(url)data = resp.text.strip()return data

你需要把代码上面的“二次元图”改成你自己触发插件的命令,把代码上面的链接改成你要调用的API链接,然后如果你触发插件的命令是中文的,你可能需要把插件的编码改成utf-8(一般默认就是utf-8,但是你最好检查一下),不然会引发乱码

相关

nonebot2调用文本API发送随机文本

这篇关于nonebot2调用图片API发送随机图片的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/239994

相关文章

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

使用Python实现base64字符串与图片互转的详细步骤

《使用Python实现base64字符串与图片互转的详细步骤》要将一个Base64编码的字符串转换为图片文件并保存下来,可以使用Python的base64模块来实现,这一过程包括解码Base64字符串... 目录1. 图片编码为 Base64 字符串2. Base64 字符串解码为图片文件3. 示例使用注意

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

C/C++和OpenCV实现调用摄像头

《C/C++和OpenCV实现调用摄像头》本文主要介绍了C/C++和OpenCV实现调用摄像头,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录准备工作1. 打开摄像头2. 读取视频帧3. 显示视频帧4. 释放资源5. 获取和设置摄像头属性

c/c++的opencv实现图片膨胀

《c/c++的opencv实现图片膨胀》图像膨胀是形态学操作,通过结构元素扩张亮区填充孔洞、连接断开部分、加粗物体,OpenCV的cv::dilate函数实现该操作,本文就来介绍一下opencv图片... 目录什么是图像膨胀?结构元素 (KerChina编程nel)OpenCV 中的 cv::dilate() 函

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现