telethon 库:如何通过电话号码添加用户

kur*_*tgn 3 python telegram telethon

我正在研究 Telegram 的 Telethon 库,它可以使用 Telegram API 充当 Telegram 客户端(重要提示:这是Telegram 客户端 API,而不是 Bot API)。

我需要的功能是创建群聊并邀请用户。当我添加联系人列表中的某人时,这很好用:

import telethon
from telethon.tl.functions.messages import CreateChatRequest
client = telethon.TelegramClient('some_session', 'key', '6284f5acf91b03somehash441ac9eef319')
client.start()
client(CreateChatRequest(['+79297226653'], 'Test Group')) # number from my contact list
Run Code Online (Sandbox Code Playgroud)

但是,如果我传递的号码不在我的联系人列表中(我确定该电话号码已在 Telegram 中注册),则此操作会中断

  File "/Users/1111/.virtualenvs/inviter-WB5rPISo/lib/python3.6/site-packages/telethon/telegram_client.py", line 1680, in _get_entity_from_string
    'Cannot turn "{}" into any entity (user or chat)'.format(string)
TypeError: Cannot turn "+79291101517" into any entity (user or chat)
Run Code Online (Sandbox Code Playgroud)

我怀疑这只CreateChatRequest适用于我的PeerUser手机,即此方法禁止使用非对等电话。

所以问题是,如果某人不是我的联系人之一,我如何将他添加到群聊中?

Ali*_*abi 6

根据电报文件:

\n\n
\n

您可以添加联系人,或使用按用户名搜索。

\n
\n\n

因此,您可以按照以下步骤操作Telethon

\n\n
    \n
  • 添加用户为联系人
  • \n
  • 将联系人添加到群组
  • \n
  • 删除联系人(可选)
  • \n
\n\n

例如,您可以使用以下代码:

\n\n
from telethon import TelegramClient\nfrom telethon.tl.functions.messages import AddChatUserRequest\nfrom telethon.tl.types import InputPhoneContact\nfrom telethon.tl.functions.contacts import ImportContactsRequest\n\napi_id = XXXXXX\napi_hash = \'XXXXXXXXXXXXXXXXXXXXXXXX\'\nphone_number = \'+98XXXXXXXXXX\'\n################################################\ngroup_id = 263549607 \nguest_phone_number=XXXXXXXXXXXX\n################################################\n\nclient = TelegramClient(\'session_name\',\n                    api_id,\n                    api_hash)\n\nassert client.connect()\nif not client.is_user_authorized():\nclient.send_code_request(phone_number)\nme = client.sign_in(phone_number, input(\'Enter code: \'))\n\n# ---------------------------------------\n# add user to contact\ncontact = InputPhoneContact(client_id=0, phone=guest_phone_number, first_name="custom_first_name", last_name="custom_last_name")\nresult = client.invoke(ImportContactsRequest([contact]))\n# ---------------------------------------\n# add contact to your group\nclient(AddChatUserRequest(user_id=result.users[0], fwd_limit=0, chat_id=group_id))\n# ---------------------------------------\n# remote contact\n
Run Code Online (Sandbox Code Playgroud)\n\n

我使用 \xe2\x80\x8d Telethon V0.19,但以前的版本几乎相同

\n