Lolik666
@Lolik666
Лох педальный, профессиональный

Как сделать так, чтобы бот в дискорде в конце дня отправлял статистику сообщений юзеров, которые отправляли их?

Вобщем, мне надо чтобы бот отправлял статистику пользователей, отправлявших сообщения. Тоесть тех, что не отправляли, он показывать не будет. Вообще, для подсчёта сообщений я использую:
user_counter = {}
...
try:
  user_counter[message.author.id] += 1
except KeyError:
  user_counter[message.author.id] = 1

И как сделать так, чтобы он показал статистику всех пользователей? Заранее спасибо за ответы
Вопрос именно в том, как показать статистику ВСЕХ пользователей, а не одного, я просто не понимаю как это сделать
  • Вопрос задан
  • 105 просмотров
Решения вопроса 2
@cython
Можете в отдельном потоке запустить цикл со sleep на день и вызовом функции отправки и очистки, либо сделать тоже самое, но через библиотеку schedule, и запустить её в отдельном потоке.
Ответ написан
shurshur
@shurshur
Например, так:

from discord.ext import tasks
from time import time,localtime

@tasks.loop(seconds=60)
async def timer_notify():
  await bot.wait_until_ready()
  cur_time = localtime(time())
  if cur_time.tm_hour == 23 and cur_time.tm_min == 59:
    await channel_for_notifies.send("Имею что сказать!")

timer_notify.start()
bot.run(ТОКЕН)


Статистику всех - это что-то типа:

msg = 'Статистика:\n'

for user_id,counter in user_counter.items():
  user = bot.get_user(user_id)
  msg = msg+' >> ' + user.name + ': ' + str(counter) + '\n'
  user_counter[user_id] = 0

channel.send(msg)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы