python - discord.py bot 命令冷却时间适用于每个人的工作命令
问题描述
我的 discord.py 机器人有一个工作命令,有一个小时的冷却时间。因此,如果我这样做>work
,然后其他人这样做>work
,它会告诉他们他们必须等待一个小时。我怎样才能让冷却时间只适用于一个用户>work
?谢谢
这是我用于冷却和命令的代码,
class Economy(commands.Cog):
def __init__(self, bot):
self.bot = bot
self.last_work_time = None
def on_work_waiting():
time.sleep(3600)
last_work_time = None
def on_work_typed():
if last_work_time is None:
last_work_time = datetime.datetime.now()
threading.Thread(target: on_work_waiting).start()
else:
time_left = datetime.datetime.now() - last_work_time
minutes_left, _ = divmod(time_left.total_seconds(), 60)
await ctx.send(f'{ctx.author.mention}, Wait {minutes_left} minutes until you can work again!')
@commands.cooldown(1, 3600, commands.BucketType.user)
@commands.command()
async def work(self, ctx):
database.load()
randomjobtitle = ["Construction Worker", "Teacher", "Twitch Streamer", "911 Dispatcher", "Librarian", "Cookie Giver", "Fast Food Worker"]
job = random.choice(randomjobtitle)
author = ctx.author
money = random.randint(10,50)
balance = database[str(ctx.message.author.id)]
total = database[str(ctx.message.author.id)] = balance + money
embed=discord.Embed(title=f"{ctx.author.name} decided to work!", description="You're going to work!", color=0x00FFFF)
embed.add_field(name="Amount Earned", value=f"**{money}** Ulti Coins", inline=True)
embed.add_field(name="Job Title (random)", value=f"**{job}**", inline=True)
embed.add_field(name="Balance Before Work", value=f"**{total}** Ulti Coins", inline=True)
embed.set_thumbnail(url=author.avatar_url)
embed.set_footer(text="Your total amount is saved across all servers that I'm in! >balance to see your balance")
await ctx.send(embed=embed)
try:
balance = database[str(ctx.message.author.id)]
except:
balance = 0
database[str(ctx.message.author.id)] = balance + money
解决方案
您的命令冷却时间@commands.cooldown(1, 3600, commands.BucketType.user)
应该已经以这种方式工作。您正在使用user
BucketType ,它基于每个用户应用冷却时间。根据您的机器人的使用方式,仍然有冷却时间的人可能正在另一台服务器上执行命令。在这种情况下,您可以使用member
BucketType。
推荐阅读
- javascript - 根据下拉选择更改隐藏字段值
- javascript - Angular 无法获取文档 ID
- vba - 有没有办法仅在启用宏的情况下显示 word 文件的内容?
- wordpress - Wordpress – 为不同的页面加载不同的 CSS 不起作用
- ios - 如何在另一个 pod 的 podspec 中使用私有 pod 作为依赖项?
- python - 我可以访问没有基本路径的路径吗?
- python - Anaconda 缺少 matplotlib
- android - 如何使用较低 API 的 java.nio 中的 toAbsolutePath 和 Paths.get
- javascript - React JSX:超过最大更新深度
- protractor - 摩卡量角器打字稿在一个预期的失败后继续执行它块