如何将 aioredis 与 discord.py 一起使用?
How to use aioredis with discord.py?
如何使用aioredis and 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 客户端?
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_pool
将 loop
作为可选参数。
await aioredis.create_redis_pool(..., loop=bot.loop)
如何使用aioredis and 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 客户端?
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_pool
将 loop
作为可选参数。
await aioredis.create_redis_pool(..., loop=bot.loop)