#python #discord.py
Вопрос:
недавно я пытался создать бота discord в discord.py. и я подошел к этапу, на котором я создаю систему выравнивания. я закодировал это так:
if message.content.startswith("%level"):
epicauthorname = message.author
channel = message.channel
counter = 0
print (message.author)
async with channel.typing():
async for message in channel.history(limit=999):
if message.author == epicauthorname:
counter =1
print (f"{message.author} used %level at {datetime_object} they have sent {counter} messages")
if counter in epicnumber:
await channel.send (F"{message.author} is level 1 in {message.channel}, they have sent {counter} messages")
я уже определил переменные и у меня есть discord.py и дата-время импортированы.
но всякий раз, когда я выполняю свою команду, она не получает нужного количества отправленных мной сообщений и не всегда получает нужного пользователя.
Что я делаю не так?
кроме того, это моя первая публикация на stackoverflow, так что извините, если есть какие-либо проблемы.
Комментарии:
1. В вашем цикле вы перезаписываете
message
, поэтому, когда вы используете его впоследствии, это будет самое последнее сообщение, а не сообщение, которое запустило эту функцию.2. Здравствуйте, я настоятельно рекомендую вам использовать событие on_message и сохранить уровни в файл JSON. таким образом, вам не нужно заставлять бота каждый раз просматривать сотни сообщений.