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

相关文章

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

python如何调用java的jar包

《python如何调用java的jar包》这篇文章主要为大家详细介绍了python如何调用java的jar包,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录一、安装包二、使用步骤三、代码演示四、自己写一个jar包五、打包步骤六、方法补充一、安装包pip3 install

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪