如何将 aioredis 与 discord.py 一起使用?

How to use aioredis with discord.py?

如何使用aioredis and discord.py?

问题是我不知道如何将 discord.ext.commandsaioredis.create_redis_pool 一起使用。

我正在通过

启动不和谐机器人
from discord.ext import commands

@bot.command("get_count")
async def get_count(ctx):
    count = get_reactions_count()
    # I need to somehow define async redis connection and use it here for example
    await ctx.send("some text")

bot = commands.Bot()
bot.run(config.TOKEN)

但是在这种情况下如何定义 redis 客户端?

PS我知道我们可以这样做,但这是最优解吗?

@bot.command("get_count")
async def get_count(ctx):
    redis = await aioredis.create_redis_pool(
        'redis://localhost')
    count = get_reactions_count()
    # and use redis connection here
    await ctx.send("some text")

要保持​​连接有效,您只需将其作为所谓的“bot var”即可。

bot.my_variable = 'whatever'

你可以对池做同样的事情,有两种方法:

1.

@bot.event
async def on_ready():
    bot.pool = await aioredis.create_redis_pool(...)
bot.pool = bot.loop.run_until_complete(aioredit.create_redis_pool(...))

简单使用bot.pool.some_method

第二种方式是首选,on_ready事件可以多次调用

您还想将 redis 事件循环与机器人的循环“连接”起来,从文档中我可以看到 aioredis.create_redis_poolloop 作为可选参数。

await aioredis.create_redis_pool(..., loop=bot.loop)