@NoGrisha
Точка.

Как сделать команду пинг?

@bot.command()
async def ping(ctx):
    def ping_pong():
        #тело функции
    e = discord.Embed(
        title = "Понг!",
        description = ping_pong(),
        timestamp = ctx.message.created_at,
        color = discord.Colour.from_rgb(255,140, 0)
    )
    await ctx.reply(embed = e)
    return
  • Вопрос задан
  • 974 просмотра
Решения вопроса 1
@y7o4ka
Зависит от того, какой именно пинг нужен.
# последний пинг до гейтвея (время между отправкой опкода 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)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы