如何使用 aiohttp 制作 reddit discord bot

Posted

技术标签:

【中文标题】如何使用 aiohttp 制作 reddit discord bot【英文标题】:How to use aiohttp to make a reddit discord bot 【发布时间】:2021-03-29 11:51:57 【问题描述】:

最近我一直在用 python 制作一个不和谐的机器人,我想添加 reddit 命令,正如我在 Dank Memer、MEE6 等机器人上看到的那样,从 reddit 发送图像帖子。我在网上找到了一些代码(我对 discord.py 很陌生),我发现了如何使用 aiohttp 来做到这一点

async def meme(ctx):
embed = discord.Embed(title="Post from r/memes.", description=None, color=0xff0000)
async with aiohttp.ClientSession() as cs:
    async with cs.get('https://www.reddit.com/r/memes/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)

唯一的问题是我还没有弄清楚如何添加帖子的 url 以便用户可以访问它。

【问题讨论】:

【参考方案1】:

你应该使用praw,praw 是一个reddit API 包装器,使用起来更容易,可以在cmd 中使用pip install -U praw 命令安装。

您需要一个 reddit API 客户端 ID 和客户端密码,方法是转到 apps page,然后按“您是开发人员吗?创建一个应用程序...' 按钮。

将标题、描述和重定向 uri 设置为您想要的任何内容,因为它没有被使用。完成此操作后,获取您的客户端 ID,该 ID 位于应用名称和客户端密码下。

现在进入您的代码并在代码开头添加import praw。 然后创建一个名为 reddit 的新变量。

reddit = praw.Reddit(client_id-='CLIENTID', client_secret='CLIENTSECRET', user_agent='WhateverYouWant'

Example of a command that shows the hottest posts from a subreddit

如果您因为我没有很好地解释而感到困惑,我很抱歉。

【讨论】:

谢谢,我去看看!

以上是关于如何使用 aiohttp 制作 reddit discord bot的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SOCKS 代理通过 aiohttp 发出请求?

如何从字符串中过滤掉特定字符串

使用 aiohttp.post 我如何传递一些数据进行迭代

aiohttp.TCPConnector(带限制参数)与 asyncio.Semaphore 用于限制并发连接数

如何使用 asyncio 和 aiohttp 异步通过 api 响应进行分页

如何查看 aiohttp 的版本