已知tg_id和手机号,如何用Telegram API分享无用户名联系人?
使用Telegram非Bot API分享联系人的可行方案
Telegram非Bot API(MTProto原生或TDLib)里确实没有直接命名为「share contact」的方法,但可以通过发送包含联系人媒体对象的消息实现和手动分享完全一致的效果,具体操作如下:
- 调用
messages.sendMedia方法,核心是构造Contact类型的媒体参数:- 准备联系人的核心信息:手机号
phone_number、tg_iduser_id,可选填写first_name和last_name(如果没有,Telegram会自动通过tg_id拉取用户公开名称) - 构造Contact媒体对象,示例MTProto格式:
{ "_": "inputMediaContact", "phone_number": "+1234567890", "first_name": "John", "last_name": "Doe", "user_id": { "_": "inputUser", "user_id": 123456789, "access_hash": 987654321 } } - 调用
messages.sendMedia时,将peer设为目标用户的peer对象(比如通过用户ID或用户名转换的inputUser),media字段填入上述Contact对象,还可以通过message字段添加自定义说明文字。
- 准备联系人的核心信息:手机号
发送后,目标用户收到的消息和手动点击「分享此联系人」的效果完全相同,会显示标准的联系人卡片,点击即可直接跳转至该联系人的聊天界面或添加到通讯录。
内容的提问来源于stack exchange,提问作者ruslan back-end
相关产品推荐
相关产品推荐

