首页 > 解决方案 > 带有 cs 和 AIOHTTP 的 Discord.py Meme 命令

问题描述

@client.command(aliases=['memes'])
async def meme(ctx):
    embed = discord.Embed(title="Meme", description=None)

    async with aiohttp.ClientSession() as cs:
        async with cs.get('https://www.reddit.com/r/wholesomememes/new.json?sort=hot') as r:
            res = await r.json()
            embed.set_image(url=res['data']['children'] [random.randint(0, 25)]['data']['url'])
            await ctx.send(embed=embed, content=None)

我从一个 stackoverflow 问题中找到了这段代码,我真的很想知道它是如何工作的。我觉得它可以提高我对 discord.py 的理解 :> 所以如果你不介意并且有时间和知识,请回答!:D

标签: pythonpython-3.xdiscorddiscord.pydiscord.py-rewrite

解决方案


所有这一切都是向给定的 url 发送一个 GET 请求,该 url 本身返回 JSON 数据。如果您通过任何浏览器发送请求,您将看到您收到 JSON 格式的数据。例如,如果您使用 Firefox,它会自动为您提供将其作为 JSON 对象进行检查的选项。为了更好地理解,您可以单击您的方式向下键

['data']['children'] [random.randint(0, 25)]['data']['url']

所以你进入数据 -> 孩子 -> 选择一个随机数 -> 数据 -> url 你会看到最终结果是一个 url 字符串,它将你引导到一个 meme 图片。

代码片段的最后一步是它发送你在某个地方得到的 url(我猜是不和谐的聊天)


推荐阅读