如何通过@提及(Ping)操作获取目标用户的USER ID?
从@提及参数获取用户ID的实现方法
你使用的是Discord Python机器人框架(如discord.py)的话,直接通过参数类型注解就能自动解析提及内容,无需手动处理字符串:
# 引入必要依赖(如果已引入可忽略) import discord from discord.ext import commands async def id(ctx: commands.Context, ping: discord.Member): await ctx.send(f"{ping.mention}, 你的用户ID是 {ping.id}")
核心逻辑说明
- 给
ping参数加上discord.Member类型注解后,框架会自动校验输入是否为有效@提及,不符合要求会自动抛出参数错误,刚好满足你将@提及设为必填参数的需求 - 解析得到的
ping是成员对象,直接调用.id属性即可拿到对应数字类型的用户ID - 如果需要支持私信场景、或者查询不在当前服务器的用户,把类型注解替换为
discord.User即可
手动解析方案(非常规需求用)
如果你确实需要从纯文本提及字符串自行提取ID,可以用正则匹配:
import re def extract_user_id(mention_str: str) -> int | None: # 匹配<@用户ID>和<@!用户ID>两种提及格式 match_res = re.fullmatch(r'<@!?(\d{15,20})>', mention_str.strip()) return int(match_res.group(1)) if match_res else None
内容的提问来源于stack exchange,提问作者Tortle.py
相关产品推荐
相关产品推荐

