Зависит от того, какой именно пинг нужен.
# последний пинг до гейтвея (время между отправкой опкода HEARTBEAT и получения HEARTBEAT_ACK)
bot.latency
# возможная реализация пинга до REST API
start = time.monotonic()
message = await ctx.send("Pinging...")
end = time.monotonic()
totalPing = round((end - start) * 1000, 2)
Если нужен общий пинг хоста, можно использовать пакет speedtest. Надо учесть, что он не асинхронный
executor = concurrent.futures.ThreadPoolExecutor(max_workers=1)
loop = asyncio.get_event_loop()
try:
s = speedtest.Speedtest(secure=True)
await loop.run_in_executor(executor, s.get_servers)
await loop.run_in_executor(executor, s.get_best_server)
except Exception as exc:
log.exception("An exception occured while fetching host latency.", exc_info=exc)
host_latency = "`Failed`"
else:
result = s.results.dict()
host_latency = round(result["ping"], 2)