MIKHAN_GO
@MIKHAN_GO

Почему не работает функция на редактирование канала под онлайн в discord.py?

Не работает функция на редактирование канала, в котором должен быть онлайн:

@client.event
async def update_online():
    online_now = sum([0 if member.status == discord.status.offline else 1 for member in after.guild.members])
    channel = bot.get_channel(806502570696376390)
    await channel.edit(name=f"ONLINE: {online_now}")

Ошибку не выдаёт, просто не работает, точнее, название канала не меняется.
  • Вопрос задан
  • 235 просмотров
Пригласить эксперта
Ответы на вопрос 1
https://discordpy.readthedocs.io/en/stable/api.htm...
  1. Функции прослушивания событий должны начинаться с on_
  2. События on_update_online() не существует, вам нужен on_member_update(before, after): https://discordpy.readthedocs.io/en/stable/api.htm...
  3. Использовать sum() в асинхронном контексте - скорее всего, плохая идея
  4. Ratelimit'ы позволяют редактировать название и описание канала только 2 раза в десять минут


Учитывая вышесказанное:
from datetime import datetime

...

last_time = datetime.now()

@client.event
async def on_member_update(before, after):
    if (datetime.now() - last_time).total_seconds() > 60*5:  # один раз в пять минут
        return
    last_time = datetime.now()
    online = len([m for m in after.guild.members if m.status != discord.Status.offline])
    await bot.get_channel(CHANNEL_ID).edit(name=f"Online: {online}")
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы