Python Discord Bot在第二次执行时需要很长时间
我有一个奇怪的问题,我会尽量解释清楚,所以我们开始 我正在使用Python编写一个Discord机器人。我发出了一个命令,该命令只能在成员处于discord.VoiceChannel时执行。它将消息发送到频道并编辑语音频道: 活动: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
@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(“命令正在冷却”)
参考资料: