Здравствуйте, у меня есть одна ошибка в коде на discord.py мне пишет ошибка ниже
@client.event
async def on_message(message):
with open('serversusers.json', 'r') as f:
serversusers = json.load(f)
await update_data(serversusers, message.author)
await add_experience(serversusers, message.author, 5)
await level_up(serversusers, message.author, message.channel)
with open('serversusers.json', 'w') as f:
json.dump(serversusers, f)
async def update_data(serversusers, user):
if not 'user.id' in serversusers:
serversusers['user.id'] = {}
serversusers['user.id']['experience'] = 0
serversusers['user.id']['level'] = 1
async def add_experience(serversusers, user, exp):
serversusers['user.id']['experience'] += exp
async def level_up(serversusers, user, channel):
experience = serversusers['user.id']['experience']
lvl_start = serversusers['user.id']['level']
lvl_end = int(experience ** (1/4))
if lvl_start < lvl_end:
await client.send_message(channel, '{} Вы получили новый уровень {}'.format(user.mention, lvl_end))
serversusers['user.id']['level'] = lvl_end
вот ошибка
await client.send_message(channel, '{} Вы получили новый уровень {}'.format(user.mention, lvl_end))
AttributeError: 'Bot' object has no attribute 'send_message'
Ответы (2 шт):
Автор решения: RAINGM
→ Ссылка
В документации есть при того, как отправлять сообщения в ивенте on_message
if lvl_start < lvl_end:
await message.channel.send(channel, '{} Вы получили новый уровень {}'.format(user.mention, lvl_end))
serversusers['user.id']['level'] = lvl_end
Автор решения: HellSai
→ Ссылка
У вас ошибка в этой команде:
await client.send_message(channel, '{} Вы получили новый уровень {}'.format(user.mention, lvl_end))
В чём суть ошибки... Вы пытаетесь отправить этот текст в неизвестно куда, то есть в сам клиент бота ( так нельзя:/ )
И поэтому вам надо просто найти канал, там где отправлялось сообщение, то есть await message.channel.send
Надеюсь помог