You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过Discord.py rewrite获取其他Discord用户的延迟(ping)?

关于discord.py检测其他用户延迟的问题

嘿,这个需求挺常见的,但很遗憾地告诉你:discord.py里没有直接获取其他用户延迟的方法,也不存在类似Mention.latency这样的属性/函数。

为什么做不到?

原因其实出在Discord的API本身:用户的延迟是其本地客户端和Discord服务器之间的连接状态数据,这个信息只有用户自己的客户端能获取到,Discord并不会把普通用户的延迟数据开放给机器人调用。

而你当前用的client.latency,是机器人自己的客户端和Discord网关之间的心跳往返时间,反映的是机器人自身的连接状态,和其他用户的延迟完全不相关。

替代方案:模拟交互延迟

如果你想做一个类似“检测用户延迟”的功能,只能退而求其次,通过机器人和用户的消息交互来计算一个近似的延迟值——这其实是机器人发送消息到服务器转发的往返时间,不是用户真实的客户端延迟,但可以作为一个参考。

示例代码如下:

import time
import discord
from discord.ext import commands

@client.command()
async def userping(ctx, member: discord.Member):
    # 记录开始时间
    start = time.time()
    # 发送临时消息触发交互
    temp_msg = await ctx.send(f"正在检测 {member.mention} 的延迟...")
    # 计算时间差并转换为毫秒
    interaction_latency = round((time.time() - start) * 1000)
    # 编辑消息展示结果
    await temp_msg.edit(content=f"{member.mention} 的交互延迟约为 {interaction_latency}ms")

注意:这个值受服务器负载、网络环境等多种因素影响,只能作为参考,不是用户真实的客户端延迟。

内容的提问来源于stack exchange,提问作者Saikat Das

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:21:01