Как реализовать необычный restrict_chat_member в aiogram?

При входе в чат юзер получает запрет на всё, кроме отправки текстовых сообщений и приглашения людей.
Пример: Вход в чат
base_premissions = {
                'can_send_messages': True,
                'can_send_media_messages': False,
                'can_send_audios': False,
                'can_send_documents': False,
                'can_send_photos': False,
                'can_send_videos': False,
                'can_send_video_notes': False,
                'can_send_voice_notes': False,
                'can_send_polls': False,
                'can_send_other_messages': False,
                'can_add_web_page_previews': False,
                'can_change_info': False,
                'can_invite_users': True,
                'can_pin_messages': False,
                'can_manage_topics': False
                }
        prem = aiogram.types.chat_permissions.ChatPermissions(**base_premissions)
        await bot.restrict_chat_member(cfg.CHAT_ID, user_id, prem, use_independent_chat_permissions=True)

Со временем пользователь получает доступ к другим разрешениям (отправка фото, видео и т.д.). Но проблема в том, что когда юзер получает "мьют" (временный запрет писать в чат) на определённое время (допустим 5 минут), то по истечению этого времени с пользователя снимаются все ограничения, а не возвращаются прежние.

Каким образом лучше выйти из ситуации? Я думаю можно было бы сохранить JSON-ы с разрешениями для кажого юзера в БД и после "мьюта" возвращать пользователям прежние разрешения, но как это реализовать? Сделать asynco.sleep(на_время_мьюта) и потом вызвать присвоение предыдущих разрешений? Предлагайте варианты
  • Вопрос задан
  • 221 просмотр
Пригласить эксперта
Ваш ответ на вопрос

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

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