зачем вызов await client.wait_until_ready() в цикле for bans в функции ban_loop()? Это затормозит цикл чёрт знает насколько. Аналогично с вызовом того же в начале ban_loop() - у тебя же есть обработчик on_ready(), ты запускаешь ban_loop() там, это гарантирует, что цикл начнётся когда бот уже готов работать.
Далее, зачем выбирать все баны и пролистывать их, когда можно настроить SELECT чтобы он выбирал только истёкшие баны?