<i id='JZlJH'><tr id='JZlJH'><dt id='JZlJH'><q id='JZlJH'><span id='JZlJH'><b id='JZlJH'><form id='JZlJH'><ins id='JZlJH'></ins><ul id='JZlJH'></ul><sub id='JZlJH'></sub></form><legend id='JZlJH'></legend><bdo id='JZlJH'><pre id='JZlJH'><center id='JZlJH'></center></pre></bdo></b><th id='JZlJH'></th></span></q></dt></tr></i><div id='JZlJH'><tfoot id='JZlJH'></tfoot><dl id='JZlJH'><fieldset id='JZlJH'></fieldset></dl></div>

  1. <small id='JZlJH'></small><noframes id='JZlJH'>

  2. <legend id='JZlJH'><style id='JZlJH'><dir id='JZlJH'><q id='JZlJH'></q></dir></style></legend>

      • <bdo id='JZlJH'></bdo><ul id='JZlJH'></ul>
      <tfoot id='JZlJH'></tfoot>
    1. 为多个discord.py bot命令设置相同的冷却时间?

      时间:2024-08-11
    2. <legend id='1APse'><style id='1APse'><dir id='1APse'><q id='1APse'></q></dir></style></legend>
      <tfoot id='1APse'></tfoot>
        <bdo id='1APse'></bdo><ul id='1APse'></ul>
          <tbody id='1APse'></tbody>

            <small id='1APse'></small><noframes id='1APse'>

              <i id='1APse'><tr id='1APse'><dt id='1APse'><q id='1APse'><span id='1APse'><b id='1APse'><form id='1APse'><ins id='1APse'></ins><ul id='1APse'></ul><sub id='1APse'></sub></form><legend id='1APse'></legend><bdo id='1APse'><pre id='1APse'><center id='1APse'></center></pre></bdo></b><th id='1APse'></th></span></q></dt></tr></i><div id='1APse'><tfoot id='1APse'></tfoot><dl id='1APse'><fieldset id='1APse'></fieldset></dl></div>

                本文介绍了为多个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="Your Link", 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命令设置相同的冷却时间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                上一篇:在repl.it上保持不一致机器人在线 下一篇:不一致机器人向消息discord.py添加反应(无自定义表情符号)

                相关文章

                <i id='yTTOH'><tr id='yTTOH'><dt id='yTTOH'><q id='yTTOH'><span id='yTTOH'><b id='yTTOH'><form id='yTTOH'><ins id='yTTOH'></ins><ul id='yTTOH'></ul><sub id='yTTOH'></sub></form><legend id='yTTOH'></legend><bdo id='yTTOH'><pre id='yTTOH'><center id='yTTOH'></center></pre></bdo></b><th id='yTTOH'></th></span></q></dt></tr></i><div id='yTTOH'><tfoot id='yTTOH'></tfoot><dl id='yTTOH'><fieldset id='yTTOH'></fieldset></dl></div>
                  <bdo id='yTTOH'></bdo><ul id='yTTOH'></ul>

                  <small id='yTTOH'></small><noframes id='yTTOH'>

                  1. <tfoot id='yTTOH'></tfoot>
                  2. <legend id='yTTOH'><style id='yTTOH'><dir id='yTTOH'><q id='yTTOH'></q></dir></style></legend>