нежелательной гемотрансфузию прикипание водокачкам тонкошёрстому транссибирской выгребем окошечек
UC_GUEST = 0
UC_USER = 1
UC_FLOODER = 2
UC_CHUDO_UDO = 3
UC_DONAT = 4
UC_MODERATOR = 10
UC_ADMIN = 11
UC_GOD = 20
user_class_names = {
UC_GUEST: "Гость",
UC_USER: "Пользователь",
UC_FLOODER: "Очень Активный",
UC_CHUDO_UDO: "Монстр Активности",
UC_DONAT: "Хорошо помог :)",
UC_MODERATOR: "Модератор",
UC_ADMIN: "Администратор",
UC_GOD: "Самый главный",
}
if user_class >= UC_MODERATOR:
if user_class > get_user_class(member_id):
# выдаём предупреждение
else:
# этот модератор не может выдать этому пользователю предупреждение
Не надо в on_ready делать бесконечный цикл. Лучше сделать отдельный таск, в котором в начале сделать bot.wait_until_ready() (это замена запуска из on_ready), и запустить его до запуска бота. А ещё удобнее использовать discord.ext.tasks безо всяких циклов - discord.py сам будет вызывать функцию с указанным интервалом:
Код станет гораздо компактнее и нагляднее.
Но даже так, флудить в API дискорда каждые 5 секунд запросами purge может быть не очень разумно. Правильнее идти "от события": удалять сообщения по мере их появления (они ещё и исчезать будут быстрее, не через 5 секунд), и только при старте бота делать purge (удалять то, что бот не словил в момент его оффлайна), примерно так:
Всё это, конечно, ещё далеко от "команды autoclear", для которой надо будет при вызове на нужном канале проверять, что её использовал пользователь с админскими правами (есть декоратор для команд) и затем добавлять в какой-то список каналов (сохраняемый куда-нибудь в базу или на диск). Вместо проверки одного канала, соответственно, проверять наличие channel.id в списке наших id. И для вызовов purge не забывать сначала проверять, что get_channel вернул не None. Потому что если хоть на одном из серверов, где есть бот, удалят хотя бы один из этих каналов, то бот сломается и остальные каналы не почистит.
И да, конечно, нужно будет предусмотреть команду "выключения autoclear".
В целом мне непонятно, зачем это нужно. Проще просто закрыть возможность писать пользователям в соответствующие каналы, и даже бот не потребуется. Разве что как учебно-тренировочная задача...