diff --git a/app/modules/latency.py b/app/modules/latency.py index 895458b..ec48f6a 100644 --- a/app/modules/latency.py +++ b/app/modules/latency.py @@ -18,24 +18,35 @@ class LatencyModule(niobot.Module): parsed = urllib.parse.urlparse(homeserver) loc = "https://" + parsed.netloc try: + start_resolv = time.perf_counter() homeserver = await niobot.resolve_homeserver(parsed.netloc) - except ValueError: + end_resolv = time.perf_counter() + resolv = round(end_resolv - start_resolv, 2) + except ValueError as e: + await ctx.respond("\N{WARNING SIGN} Failed to resolve homeserver: " + str(e)) homeserver = loc + resolv = -1 + async with httpx.AsyncClient(headers={"User-Agent": niobot.__user_agent__}) as client: timings = [] for rnd in range(5): - start = time.time() + start = time.perf_counter() try: res = await client.get(f"{homeserver}/_matrix/federation/v1/version") res.raise_for_status() except httpx.HTTPError: timings.append(-1) else: - end = time.time() + end = time.perf_counter() timings.append(end - start) fed_latency = sum(timings) / len(timings) * 1000 hs_target = homeserver[8:] return await ctx.respond( - "Latency: {:,.2f}ms (federation latency to {!r}: {:,.2f}ms)".format(latency, hs_target, fed_latency) + "Latency: {:,.2f}ms ({:,.2f}ms to resolve homeserver, federation latency to {!r}: {:,.2f}ms)".format( + latency, + resolv * 1000, + hs_target, + fed_latency + ) )