如何从Message.Entity获取user_id及Telegram用户提及相关问题咨询
获取long类型user_id的正确路径
- 若消息实体类型为
text_mention:可直接通过update.Message.Entities[N].User.Id路径获取long类型的用户ID,该类实体对应无公开用户名用户的提及场景。 - 若消息实体类型为
mention(即显示为@username格式):先提取实体对应文本中@后的用户名字符串,调用getChat接口传入该用户名,返回结果中的id字段即为目标long类型用户ID。
通过username提及用户的实现方式
官方消息格式规范确实不支持直接用@username在Markdown/HTML类型消息中生成官方认可的可点击用户提及,可通过两种方式实现等价效果:
- 如果你已经提前维护了用户名与用户ID的映射关系,直接将内容中的
@username替换为[显示文本](tg://user?id=对应绑定的用户ID)的Markdown格式,即可生成官方标准的可点击提及。 - 直接发送原始
@username纯文本:Telegram客户端会自动匹配公开可检索的用户名生成可点击跳转链接,但该效果不受官方接口保证,私有用户、近期修改过用户名的账号可能无法被正确识别。
内容的提问来源于stack exchange,提问作者Pedro Mora
相关产品推荐
相关产品推荐

