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

如何在discord.py中通过显示名称获取USERID?

解决Discord.py根据服务器昵称提及目标用户的问题

你可以通过遍历服务器成员、匹配目标用户的服务器专属显示名称来实现,不用依赖用户ID。直接上代码示例:

@bot.command()
async def mention(ctx, *, nickname: str):
    # 遍历当前服务器的所有成员,匹配服务器昵称
    target_member = None
    for member in ctx.guild.members:
        # 大小写不敏感匹配,降低输入容错门槛
        if member.display_name.lower() == nickname.lower():
            target_member = member
            break
    
    if target_member:
        # 直接使用member.mention来@目标用户
        await ctx.send(f"找到目标用户:{target_member.mention}")
    else:
        await ctx.send(f"未找到服务器显示名称为*{nickname}*的用户")

注意事项

  • 确保机器人开启了Server Members Intent,否则可能无法获取到服务器的全部成员列表,导致匹配失败
  • 如果服务器内有多个用户的服务器昵称完全一致,上面的代码会返回第一个匹配到的用户,你可以根据需求修改逻辑(比如列出所有匹配结果让用户二次选择)
  • 使用member.display_name才能正确获取用户在当前服务器的专属昵称,而不是全局用户名member.name

内容的提问来源于stack exchange,提问作者Zac Moon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:37:09