Python Discord Bot在第二次执行时需要很长时间

Python Discord Bot在第二次执行时需要很长时间,python,discord,discord.py,bots,Python,Discord,Discord.py,Bots,我有一个奇怪的问题,我会尽量解释清楚,所以我们开始 我正在使用Python编写一个Discord机器人。我发出了一个命令,该命令只能在成员处于discord.VoiceChannel时执行。它将消息发送到频道并编辑语音频道: 活动: @bot.command(name=“lft”,pass\u context=True) 异步def lft_命令(ctx): 等待lft.lft(ctx、bot) 第一种方法(lft): 异步def lft(ctx、bot): 如果ctx.channel==bo

我有一个奇怪的问题,我会尽量解释清楚,所以我们开始

我正在使用Python编写一个Discord机器人。我发出了一个命令,该命令只能在成员处于discord.VoiceChannel时执行。它将消息发送到频道并编辑语音频道:

活动:

@bot.command(name=“lft”,pass\u context=True)
异步def lft_命令(ctx):
等待lft.lft(ctx、bot)
第一种方法(lft):

异步def lft(ctx、bot): 如果ctx.channel==bot.get_通道(80610917236689162): dcUser=ctx.author 如果dcUser.voice不是None: 如果dcUser.voice.channel.category==bot.get_频道(809430391177084969)。类别: 等待方法。设置\u lft(dcUser,bot) 其他: 等待机器人。获取_频道(80611238393094942)。发送( ctx.author.title+“,您必须在临时通道中才能使用此命令。”, 删除(在=30之后) 其他: 等待机器人。获取_频道(80611238393094942)。发送( ctx.author.antify+“,您必须在临时通道中才能使用此命令。”,在=30后删除) 其他: 等待机器人。获取_频道(80611238393094942)。发送( ctx.author.antify+”,您不能在此处使用此命令,请转到“+bot.get\u频道”( 80610917236689162)。提及,删除(在=30之后) 第二种方法(set_lft):

async def set_lft(执行器、bot):
频道=executor.voice.channel
lft_通道=机器人获取_通道(80610917236689162)
用户角色=等待获得等级(执行者)
打印(“b”)
等待频道。设置权限(get(executor.guild.roles,id=806081402407092295),connect=False)
打印(“c”)
等待频道编辑(name=“寻找配偶”,用户限制=5)
msg=等待lft\U通道发送(
content=executor.notice+“正在为排名寻找队友,他是“+user_role.name+”。加入一个频道并对消息做出反应以加入该频道。当前有“+str”(
len(executor.voice.channel.members))+“/5频道播放器。”,
删除(在=900之后)
等待消息。添加\u反应('✅')
lft_数据[executor.id]=[“占位符”,消息,频道]
lft_数据[msg.id]=[执行器,“占位符”,通道]
lft_数据[channel.id]=[executor,msg,“占位符”]
如果执行命令的成员离开语音频道,则语音频道将再次更改回正常语音频道:

async def set_casual(通道):
msg=get_msg(频道)
执行器=获取执行器(通道)
等待消息。删除()
如果len(channel.members)!=0:
等待频道。设置权限(get(executor.guild.roles,id=806081402407092295),connect=True)
等待频道。编辑(名称=频道。成员[0]。尼克+“'s频道”,限制=无)
[msg.id,channel.id,executor.id]中x的[lft_data.pop(x,无)]
另一个用户可以执行该命令,但是如果该命令被执行,它不会被调用,或者需要大约5分钟才能执行。是否有循环运行得太长,或者根本不会停止

先谢谢你

附言:

您正受到速率限制。产生错误的唯一方法是在您的命令中添加全局冷却,或在有人使用该命令时创建新频道

@discord.ext.commands.cooldown(速率=2,per=600)#bucketType默认为全局
@bot.command()
异步def lft_命令(ctx):
#这里还有其他东西
@lft_命令错误()
异步def lft_错误(ctx,错误):#处理冷却错误
如果isinstance(错误,commands.CommandOnColdDown):
等待ctx.send(“命令正在冷却”)
参考资料:

那么,我可以将冷却时间设置为1秒或什么的吗?或者这会导致性能问题吗?冷却时间是为了防止您的机器人受到速率限制,如果您减少冷却时间,您只会受到速率限制。我记得。我曾经受到过速率限制,现在我知道为什么了。谢谢!