Я работаю над системой добавления уровня
import discord
from discord.ext.commands import Bot
from discord.ext import commands
import json
import os
import asyncio
import time
import random
from discord import Game
import math, time
Client = discord.client
client = commands.Bot(command_prefix = '!')
Clientdiscord = discord.Client()
os.chdir(r'C:\Users\Hema\Desktop\Level')
@client.event
async def on_ready():
print('lvl ready')
@client.event
async def on_message(message):
with open('users.json', 'r') as f:
users = json.load(f)
#code
await update_data(users, message.author)
await add_experience(users, message.author, 5)
await level_up(users, message.author, message.channel)
with open('users.json','w') as f:
json.dump(users, f)
if message.content == 'system lvl':
await client.send_message(message.channel, '{} level up {}'.format(message.author.mention, lvl_end))
users[message.author.id]['level'] = lvl_end
@client.event
async def on_member_join(member):
with open('users.json', 'r') as f:
users = json.load(f)
#code
await update_data(users, member)
with open('users.json','w') as f:
json.dump(users, f)
async def update_data(users, user):
if not user.id in users:
users[user.id] = {}
users[user.id]['experience'] = 0
users[user.id]['level'] = 1
async def add_experience(users, user, exp):
users[user.id]['experience'] += exp
async def level_up(users, user, channel):
experience = users[user.id]['experience']
lvl_start = users[user.id]['level']
lvl_end = int(users[message.author.id]["experience"] ** (1/4))
if lvl_start < lvl_end:
await client.send_message(channel, '{} level up {}'.format(user.mention, lvl_end))
users[user.id]['level'] = lvl_end
client.run("Token")
работает отлично ^)
, но проблема отображается, когда я хочу узнать уровень пользователя, введя "system lvl", показывая эту ошибку
=========== RESTART: C:\Users\Darzy\Desktop\Level\Bot_lvl.py ===========
lvl ready
Ignoring exception in on_message
Traceback (most recent call last):
File "C:\Users\Darzy\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\discord\client.py", line 307, in _run_event
yield from getattr(self, event)(*args, **kwargs)
File "C:\Users\Darzy\Desktop\Level\Bot_lvl.py", line 31, in on_message
await level_up(users, message.author, message.channel)
File "C:\Users\Darzy\Desktop\Level\Bot_lvl.py", line 67, in level_up
lvl_end = int(users[message.author.id]["experience"] ** (1/4))
NameError: name 'message' is not defined.
Я просто удивляюсь, если это возможно, чтобы решить эту проблему, я пробовал много методов, но не работал: кроме того, просто изменил автора для пользователя и все еще та же проблема.я верю в stackoverflow.сообщество разработчиков ^)