nonebot2调用json格式文本API发送随机文本

发布于:2022-12-29 ⋅ 阅读:(743) ⋅ 点赞:(0)

前言

前文讲了如何调用直接返回文本格式的API,有粉丝问如何调用json格式的,于是就有了这篇文章

nonebot2调用文本API发送随机文本_ITSevin的博客-CSDN博客

正文

json处理讲解

推荐这篇文章,将Python处理json格式讲得通俗易懂,以下的讲解我就默认你看了这篇文章已经学会了json的序列化和反序列化(以后如果有时间我会讲一些这种nonebot额外的Python基础)干货|Python处理JSON格式的数据,太详细了吧!_我爱Python数据挖掘的博客-CSDN博客_python处理json数据

插件编写

1.这里以调用https://api.juncikeji.xyz/api/english.php?的json格式的文本API为例,我们先获取API的URL

 2.然后在浏览器上打开上面获取的URL,观察他返回的json数据。我们可以看到,他返回的单词文本对应的是"data"里的"word"

 3.之后我们就可以就可以通过json.loads将以上的数据反序列化到一个字典当中,再获取字典中date字典,在date字典中再获取word对应的值就能得到单词文本了

import json

data_json = json.loads(data_json)
data_date = date_json['date']
data_word = date_data['word']

插件模板

把模板放在着了,大家可以参考我下面的代码以及查看nonebot官方文档自行研究,代码如下

from nonebot.plugin.on import on_regex
from nonebot.typing import T_State
from nonebot.adapters.onebot.v11 import GroupMessageEvent,Bot,Message,MessageSegment
import requests
import json
 
yydc = on_regex ( pattern=r"^英语单词$" )
 
@yydc.handle()
async def sj(bot: Bot, event: GroupMessageEvent, state: T_State):
    data_word = await get_yydc()
    # at_ = f"[CQ:at,qq={event.get_user_id()}]"
    await random_yydc.send(Message(data_word))
 
 
async def get_yydc():
    url = 'https://api.juncikeji.xyz/api/english.php?'
    data_req = requests.get(url)
    data_json = json.loads(data_req.text)
    data_date = data_json['data']
    data_word = data_date['word']
    return data_word

你需要把代码上面的“英语单词”改成你自己触发插件的命令,把代码上面的链接改成你要调用的API链接,把从json数据获取单词文本的步骤按照你调用的API返回的数据进行修改,然后如果你触发插件的命令是中文的,你可能需要把插件的编码改成utf8(一般默认就是utf8,但是你最好检查一下),不然会引发乱码

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到