Make the same cooldown for multiple discord.py bot commands?(为多个discord.py bot命令设置相同的冷却时间?)
本文介绍了为多个discord.py bot命令设置相同的冷却时间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是用discord.py
编写的。
我有多个类似以下内容的命令:
@bot.command(name ="hi")
async def hi(ctx):
link = ["https://google.com", "https://youtube.com"]
chosen = random.choice(link)
url = chosen
embed = discord.Embed(title="WW91ciBMaW5r", description=f"[Click Here]({url})", color=0x00ff00)
if ctx.message.guild == None:
await ctx.author.send('You can not use this command in your DM!')
pass
else:
await ctx.author.send(embed=embed)
如果有人使用其中一个命令,则应对所有命令实施冷却(例如,如果使用!hi
,则!hi
和!bye
都将应用冷却。
我知道您可以使用@commands.cooldown(1, 600, commands.BucketType.user)
,但这只对当前命令应用冷却。
推荐答案
代码中的cooldowns
修饰符是这样定义的:
def cooldown(rate, per, type=BucketType.default):
def decorator(func):
if isinstance(func, Command):
func._buckets = CooldownMapping(Cooldown(rate, per, type))
else:
func.__commands_cooldown__ = Cooldown(rate, per, type)
return func
return decorator
我们可以对此进行修改,以便只创建一个在命令之间共享的Cooldown
对象:
def shared_cooldown(rate, per, type=BucketType.default):
cooldown = Cooldown(rate, per, type=type)
def decorator(func):
if isinstance(func, Command):
func._buckets = CooldownMapping(cooldown)
else:
func.__commands_cooldown__ = cooldown
return func
return decorator
我们将通过调用它来获取装饰器,然后将其应用于命令:
my_cooldown = shared_cooldown(1, 600, commands.BucketType.user)
@bot.command()
@my_cooldown
async def hi(ctx):
await ctx.send("Hi")
@bot.command()
@my_cooldown
async def bye(ctx):
await ctx.send("Bye")
这篇关于为多个discord.py bot命令设置相同的冷却时间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:为多个discord.py bot命令设置相同的冷却时间?


猜你喜欢
- python check_output 失败,退出状态为 1,但 Popen 适用于相同的命令 2022-01-01
- 如何在 python3 中将 OrderedDict 转换为常规字典 2022-01-01
- 沿轴计算直方图 2022-01-01
- 如何将一个类的函数分成多个文件? 2022-01-01
- 使用Heroku上托管的Selenium登录Instagram时,找不到元素';用户名'; 2022-01-01
- pytorch 中的自适应池是如何工作的? 2022-07-12
- python-m http.server 443--使用SSL? 2022-01-01
- 分析异常:路径不存在:dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data; 2022-01-01
- 如何在 Python 的元组列表中对每个元组中的第一个值求和? 2022-01-01
- padding='same' 转换为 PyTorch padding=# 2022-01-01