Мешать многопоточность с асинхронностью - плохая идея.
А вообще зависит от реализации server.status(). Если оно делает синхронный сетевой запрос, то конечно бот встанет на время его выполнения.
Если нет асинхронной реализации, я бы запустил новый таск, который в цикле раз в минуту-две опрашивает сервер и запоминает текущий онлайн. А по команде отдавал бы только последнее запомненное значение.
В принципе можно использовать
loop.run_in_executor() для выполнения потока как асинхронной задачи. Это более-менее безопасно.