<p>因此,您可以使用<a href="https://docs.python.org/3/library/datetime.html" rel="nofollow noreferrer">^{<cd1>}</a>来检查最后一个声明是何时提交的</p>
<pre class="lang-py prettyprint-override"><code>import datetime
from datetime import datetime, timedelta
now = datetime.now() # a datetime.datetime objekt
last_claim_stamp = str(now.timestamp()) # save this into json
last_claim = datetime.fromtimestamp(float(last_claim_stamp) # get a datetime.datetime back
delta = now - last_claim # the timedelta between now and the last claim
if delta > timedelta(hours=48): # if last claim is older than 48h; 24h until he can re use the command + 24h time to claim his daily money again = 48h
streak = 1 # reset the streak
else:
streak += 1
</code></pre>
<p>将您的数据更新为以下内容:</p>
<pre class="lang-py prettyprint-override"><code>data = {
"1234567890": {
"streak": 4,
"balance": 50,
"last_claim": "1623593996.659298"
}
}
</code></pre>
<p>命令:</p>
<pre class="lang-py prettyprint-override"><code>@bot.command()
@commands.check(user)
@commands.cooldown(1, 86400, commands.BucketType.user)
async def daily(ctx):
with open("json/data.json", "r") as f:
data = json.load(f)
streak = data[f"{ctx.author.id}"]["streak"]
last_claim_stamp = data[f"{ctx.author.id}"]["last_claim"]
last_claim = datetime.fromtimestamp(float(last_claim_stamp)
now = datetime.now()
delta = now - last_claim
if delta > timedelta(hours=48):
print("reset streak")
streak = 1
else:
print("increase streak")
streak += 1
daily = 45 + (streak * 5)
amount_after = data[f"{ctx.author.id}"]["balance"] + daily
data[f"{ctx.author.id}"]["streak"] = streak
data[f"{ctx.author.id}"]["balance"] += daily
data[f"{ctx.author.id}"]["last_claim"] = str(now.timestamp())
with open("json/data.json", "w") as f:
json.dump(data, f, indent=2)
embed = discord.Embed(title="Daily", colour=random.randint(0, 0xffffff), description=f"You've claimed your daily of **${daily}**, now you have **${amount_after}**")
embed.set_footer(text=f"Your daily streak: {streak}")
await ctx.send(embed=embed)
</code></pre>