Не могу создать команду rank (рейтинговый бот) discord.py
В команде надо подсчитать максимальные xp для этого уровня, но мне кажется не хватает знаний математики или логики)
import discord
from discord.ext import commands
import discord
import json
import os
import math
client = commands.Bot(command_prefix='.', intents=discord.Intents.all())
blue = 0x00BFFF
@client.event
async def on_message(message):
if message.author.bot == False:
with open('users.json', 'r') as f:
users = json.load(f)
await update_data(users, message.author)
await add_experience(users, message.author, 5)
await level_up(users, message.author, message)
await client.process_commands(message)
with open('users.json', 'w') as f:
json.dump(users, f)
async def update_data(users, user):
if not f'{user.mention}' in users:
users[f'{user.mention}'] = {}
users[f'{user.mention}']['experience'] = 0
users[f'{user.mention}']['level'] = 1
async def add_experience(users, user, exp):
users[f'{user.mention}']['experience'] += exp
async def level_up(users, user, message):
experience = users[f'{user.mention}']['experience']
lvl_start = users[f'{user.mention}']['level']
lvl_end = int(experience ** (1/3))
print(lvl_end)
if lvl_start < lvl_end:
await message.channel.send(embed= discord.Embed(description= f'{user.mention} повысил уровень до **{lvl_end}**! :tada:', color= blue))
users[f'{user.mention}']['level'] = lvl_end
@client.command(pass_context=True)
async def rank(ctx):
await ctx.send(f'{experience}/{max_experience}')
client.run('token')
Как подсчитать max_experience?