python-telegram库object_ptr传参问题:addContact调用失败排查
解决python-telegram库调用addContact方法失败的问题
看起来你遇到的问题核心是TDLib对象格式不规范——我帮你梳理几个关键的排查和修复点:
1. 必须给contact对象添加@type标识
TDLib的所有数据对象都要求带@type字段来明确类型,你当前的contact字典里缺了这个关键信息,导致TDLib无法识别这是一个合法的contact对象。修正后的代码应该是这样:
result = t.call_method( 'addContact', params={ 'contact': { '@type': 'contact', # 这个字段一定要加! 'phone_number': '你的目标电话号码(要带国家代码,比如+8613xxxxxxxxx)', 'first_name': '联系人名字', 'last_name': '联系人姓氏', 'vcard': '', 'user_id': 0 }, 'share_phone_number': False } ) result.wait()
2. 别只看update,先查错误信息
你现在只打印result.update,但如果请求失败,错误信息会存在result.error里,这才是定位问题的关键。建议修改代码,先检查错误:
if result.error: print(f"出错啦:{result.error}") else: print(f"联系人添加成功:{result.update}")
比如如果参数不对,这里会直接告诉你是对象类型无效,还是电话号码格式有问题。
3. 确认你的TDLib客户端已经登录授权
如果你的客户端还没完成登录流程,调用addContact这种需要权限的方法会直接失败,返回None。可以先调用getMe验证一下:
me_result = t.call_method('getMe') me_result.wait() if me_result.error: print(f"登录失败:{me_result.error}") else: print(f"当前登录账号:{me_result.update}")
4. 检查电话号码格式
TDLib要求电话号码必须是标准的国际格式,比如带国家代码(+86开头的国内号码),不能有空格、括号这类特殊字符,否则会识别失败。
按照上面的步骤调整后,应该就能正常添加联系人了。
内容的提问来源于stack exchange,提问作者OpenMindAmir
相关产品推荐
相关产品推荐

