如何使用aioredis和discord.py?
问题是我不知道如何使用discord.ext.commands
与aioredis.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客户端?
我知道我们可以这样做,但这是最优解决方案吗?@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变量"。
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事件循环与bot的循环,从文档中我可以看到aioredis.create_redis_pool
将loop
作为可选参数。
await aioredis.create_redis_pool(..., loop=bot.loop)