Discord.py表情包命令需要很长时间 [英] Discord.py meme command takes a lot of time
本文介绍了Discord.py表情包命令需要很长时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在discord.py中制作了一个机器人,并使用asyncpraw创建了一个完全有效的表情包命令(praw不起作用)。但这个表情包需要大约8-10秒的时间才能出现。有什么办法可以缩短时间吗?以下是代码:-
@client.command(aliases=['memes'])
async def meme(ctx):
subreddit = await reddit.subreddit("memes")
all_subs = []
top = subreddit.top(limit = 200)
async for submission in top:
all_subs.append(submission)
random_sub = random.choice(all_subs)
name = random_sub.title
url = random_sub.url
ups = random_sub.score
link = random_sub.permalink
comments = random_sub.num_comments
embed = discord.Embed(title=name,url=f"https://reddit.com{link}", color=ctx.author.color)
embed.set_image(url=url)
embed.set_footer(text = f"👍{ups} 💬{comments}")
await ctx.send(embed=embed)
推荐答案
它需要一段时间,因为每次执行命令时,它总是会生成一个提交列表以供选择,但在命令执行后该列表就消失了,这意味着您每次执行命令时都会生成200条帖子来选择
如果您想要一种更有效、更快的方法,请将其设置为单独的函数!
all_subs = []
async def gen_memes():
subreddit = await reddit.subreddit("memes")
top = subreddit.top(limit = 200)
async for submission in top:
all_subs.append(submission)
@client.event
async def on_ready():
await gen_memes() # generate memes when bot starts
@client.command(aliases=['memes'])
async def meme(ctx):
random_sub = random.choice(all_subs)
all_subs.remove(random_sub)
name = random_sub.title
url = random_sub.url
ups = random_sub.score
link = random_sub.permalink
comments = random_sub.num_comments
embed = discord.Embed(title=name,url=f"https://reddit.com{link}", color=ctx.author.color)
embed.set_image(url=url)
embed.set_footer(text = f"👍{ups} 💬{comments}")
await ctx.send(embed=embed)
if len(all_subs) <= 20: # meme collection running out owo
await gen_memes()
当然这不是最有效的方式,如果你想在某个时间间隔填充表情包,可以使用discord.ext.tasks
!
这篇关于Discord.py表情包命令需要很长时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文