给命令添加冷却时间[Discord.py]

我最近开始学习python,但不了解如何对命令进行冷却。我需要用户每12小时获取硬币。如果时间还没有过去,我需要显示剩余时间。

import datetime
import json

def save_data(users):
    with open('files/users_info.json','w') as f:
        json.dump(users,f)

async def add_money(users,user,money):
    users[str(user.id)]['money'] += money

@commands.command(name='daily')
    async def daily(self,ctx):
        with open('files/users_info.json','r') as f:
            users = json.load(f)
        # timer...
        #
        # if time >= 43200 (seconds)
        #     await add_money(users,ctx.author,1000)
        #     await ctx.send('Gave 1000 coins')
        # else:
        #     hours...
        #     min...
        #     sec...
        #     await ctx.send(f'Left {hours},{min},{sec}')

        save_data(users)
dyc31535 回答:给命令添加冷却时间[Discord.py]

您需要在命令上方使用此行: @commands.cooldown(1,43200,commands.BucketType.user)

所以您得到:

@commands.cooldown(1,commands.BucketType.user)
@commands.command(name='daily')
    async def daily(self,ctx):
        with open('files/users_info.json','r') as f:
            users = json.load(f)

其中1是每个间隔可以调用命令的次数,43200(60 * 60 * 12)是间隔(以秒为单位),commands.buckettype.user定义限制是针对每个用户的。

本文链接:https://www.f2er.com/3149741.html

大家都在问