如何使用Telethon提取Telegram账户的自定义姓名与个人简介
实现逻辑说明
- 你调用
ImportContactsRequest返回的users[0]本身就包含用户原生设置的姓名字段,无需额外处理,你之前只提取了username所以没拿到这两个值。你导入时填写的__test__、__last_test__是你账号侧对该联系人的备注,和用户自己设置的原生姓名完全独立,所以删除联系人后备注消失,就会显示用户自定义的原生姓名,属于平台正常逻辑。 - 个人简介(bio)不在基础用户信息结构里,需要单独调用
GetFullUserRequest接口获取。
调整后的完整代码
from telethon import functions, types def check(phone_number): try: contact = types.InputPhoneContact( client_id = 0, phone = phone_number, first_name="__test__", last_name="__last_test__" ) contacts = client(functions.contacts.ImportContactsRequest([contact])) user = contacts.to_dict()['users'][0] # 提取用户原生姓名 original_first_name = user['first_name'] original_last_name = user['last_name'] if user.get('last_name') else '' username = user['username'] # 提取个人简介bio full_user = client(functions.users.GetFullUserRequest(id=user['id'])) bio = full_user.about if full_user.about else '' # 传入用户ID删除联系人,比传username兼容性更好,适配没有设置用户名的账号 client(functions.contacts.DeleteContactsRequest(id=[user['id']])) # 按需返回所有提取到的字段 return { "username": username, "first_name": original_first_name, "last_name": original_last_name, "bio": bio } except: return "__err__"
内容的提问来源于stack exchange,提问作者style talaei
相关产品推荐
相关产品推荐

