У меня проблема с тем, что мои команды не выполняются, когда я добавляю систему выравнивания в моего бота. Моим решением было сделать 2-го бота только для системы выравнивания, но тогда я не могу сделать команду! Level, и я знаю, что это довольно странная ошибка или плохая практика, чтобы сделать 2-го бота, но это было мое единственное решение. Когда я удаляю систему выравнивания, все работает идеально.
Вот мой код:
@client.event
async def on_member_join(member):
with open('users.json', 'r') as f:
users = json.load(f)
await update_data(users, member)
with open('users.json', 'r') as f:
users = json.load()
@client.event
async def on_message(message):
with open('users.json', 'r') as f:
if not message.author.bot:
users = json.load(f)
expp = generated_xp()
await update_data(users, message.author)
await add_experience(users, message.author, expp)
await level_up(users, message.author, message)
with open('users.json', 'w') as f:
json.dump(users, f)
async def update_data(users, user):
if not f'{user.id}' in users:
users[f'{user.id}'] = {}
users[f'{user.id}']['experience'] = 0
users[f'{user.id}']['level'] = 1
async def add_experience(users, user, exp):
users[f'{user.id}']['experience'] += exp
async def level_up(users, user, message):
guild = client.get_guild(684329516385959945)
experience = users[f'{user.id}']['experience']
lvl_start = users[f'{user.id}']['level']
lvl_end = int(experience ** (1/3))
if lvl_start < lvl_end:
await message.channel.send(f'{user.mention} has leveled up to level {lvl_end}')
users[f'{user.id}']['level'] = lvl_end
lvl = users[f'{user.id}']['level']
# Roles
Alvl = get(guild.roles, id=684802308000841791) # 5
Blvl = get(guild.roles, id=684803221671378972) # 10
Clvl = get(guild.roles, id=684803359328174132) # 20
Dlvl = get(guild.roles, id=684803458423062529) # 35
Elvl = get(guild.roles, id=684803761679761409) # 50
Flvl = get(guild.roles, id=684803911005372487) # 75
Glvl = get(guild.roles, id=684804062847565863) # 100
Hlvl = get(guild.roles, id=684804165930975283) # 150
if lvl >= 5:
await user.add_roles(Alvl)
if lvl >= 10:
await user.add_roles(Blvl)
if lvl >= 20:
await user.add_roles(Clvl)
if lvl >= 35:
await user.add_roles(Dlvl)
if lvl >= 50:
await user.add_roles(Elvl)
if lvl >= 75:
await user.add_roles(Flvl)
if lvl >= 100:
await user.add_roles(Glvl)
if lvl >= 150:
await user.add_roles(Hlvl)
@client.command()
async def level(ctx):
current_lvl = users[f'{member.id}']['level']
current_xp = users[f'{member.id}']['experience']
member = ctx.message.author
member_icon = member.avatar_url
guild = client.get_guild(684329516385959945)
with open('users.json', 'r') as f:
json.dump(users, f)
lvl_embed=discord.Embed(title=" " + member + " ♥ " + guild.name, color=0xcc2800)
lvl_embed.set_thumbnail(member_icon)
lvl_embed.add_field(name="? " + current_lvl + " LVL", value="Gain more xp to level up.", inline=False)
lvl_embed.add_field(name="? " + current_xp + " XP", value="Type in chat fore more xp.", inline=True)
print('printira')
await ctx.send(embed=lvl_embed)
client.run(TOKEN)
Моя python версия равна 3.8.2 , если это необходимо сказал: P