Каждую неделю пишу, что не стоит формировать запросы конкатенацией, интерполяцией и форматированием строк. Используйте prepared statements и будет вам счастье.
if - это оператор, а не функция. Очевидное решение, первым приходящее в голову - запихать его в цикл. Но возможно, у вашего бота есть свой цикл событий, так что надо использовать API библиотеки организации повторных проверок.
Если нужно конкурентно делать блокирующиеся вызовы, без потоков просто не обойтись. Асинхронность работает только тогда, когда вся цепочка вызовов от начала до конца асинхронная.
Потому что метод sort изменяет result и ничего не возвращает. Если нужно возвращать новый отсортированный список без изменения исходного, стоит использовать функцию sorted.