672 lines
26 KiB
Python
672 lines
26 KiB
Python
# noinspection PyUnresolvedReferences
|
||
class Client:
|
||
"""Telethon Client,与 Telegram 互动的主要手段。
|
||
|
||
参数:
|
||
session (``str``):
|
||
如果给出了字符串(它可以是完整路径)则将会保存 ``.session`` 文件;如果没有,则不会保存会话,并且在程序结束后,您应该调用
|
||
`client.log_out()` 。
|
||
|
||
请注意,如果传递字符串,则文件将保存为当前工作目录下,并且您还可以传递绝对路径。
|
||
|
||
api_id (``int`` | ``str``):
|
||
从 https://my.telegram.org 获取到的 *api_id* 。
|
||
|
||
api_hash (``str``, *optional*):
|
||
从 https://my.telegram.org 获取到的 *api_hash* 。
|
||
|
||
bot_token (``str``, *可选*):
|
||
如果设置了 Bot token,则将直接使用 Bot 身份登录。
|
||
|
||
app_version (``str``, *可选*):
|
||
应用版本号,默认设置为 `telethon.version.__version__` 。
|
||
|
||
device_model (``str``, *optional*):
|
||
设备型号,默认设置为 `·`platform.uname().machine` 。
|
||
|
||
system_version (``str``, *optional*):
|
||
操作系统版本,默认设置为 `platform.uname().release` 。
|
||
|
||
lang_code (``str``, *optional*):
|
||
客户端上使用的 ISO 639-1 标准的语言代码。默认为 “en”。
|
||
|
||
use_ipv6 (``bool``, *可选*):
|
||
如果设置为 `True` ,则将使用 ipv6 连接 Telegram 服务器。默认关闭 (通过 IPv4).
|
||
|
||
proxy (``tuple``, ``str``, ``dict``, *可选*):
|
||
MTProxy: `('hostname', port, 'secret')` ;socks5: `(socks.SOCKS5, "socks.example.com", 1080)` 获取更多
|
||
代理配置详情:https://github.com/Anorov/PySocks#usage-1
|
||
|
||
timeout (``int``, ``float``, *可选*):
|
||
设置链接超时所要等待的秒数。
|
||
|
||
flood_sleep_threshold (``int``, ``float``, *可选*):
|
||
设置当出现 `FloodWaitError` 时自动休眠应用程序的时间。
|
||
"""
|
||
|
||
def start(self):
|
||
"""启动客户端(在必要时连接和登录)。
|
||
|
||
此方法将使客户端连接到 Telegram 服务器,如果是一个新的客户端,会自动进行交互式的授权过程。
|
||
|
||
返回:
|
||
:obj:`~telethon.Client`: 启动的 client本身。
|
||
|
||
Raises:
|
||
ConnectionError: 如果您尝试启动已启动客户端。
|
||
|
||
Example:
|
||
.. code-block:: python
|
||
:emphasize-lines: 4
|
||
|
||
from telethon.sync import TelegramClient, events
|
||
|
||
app = Client("my_account", api_id, api_hash)
|
||
app.start()
|
||
|
||
# Call API methods
|
||
|
||
app.disconnect()
|
||
|
||
"""
|
||
|
||
def disconnect(self):
|
||
"""断开客户端与 Telegram 服务器的连接。
|
||
|
||
此方法将客户端与 Telegram 服务器断开连接,并停止底层任务。
|
||
|
||
返回:
|
||
:obj:`~telethon.Client`: 停止的 client本身。
|
||
|
||
Raises:
|
||
OSError: 如果您尝试停止已停止的客户端。
|
||
|
||
Example:
|
||
.. code-block:: python
|
||
:emphasize-lines: 8
|
||
|
||
from telethon.sync import TelegramClient, events
|
||
|
||
app = Client("my_account", api_id, api_hash)
|
||
app.start()
|
||
|
||
# Call API methods
|
||
|
||
app.disconnect()
|
||
|
||
"""
|
||
|
||
# Message
|
||
def send_message(self):
|
||
"""向指定的用户,群组或频道发送消息。
|
||
|
||
默认文本解析模式与官方应用程序相同(Markdown)
|
||
|
||
向 bot 发送 start 参数命令 (例如 ``?start=data``) 同样可行,请直接发送 ``/start data`` 。
|
||
|
||
参数:
|
||
entity (:obj:`~telethon.tl.types.user` | :obj:`~telethon.tl.types.chat` | :obj:`~telethon.tl.types.channel`):
|
||
接收消息的对象
|
||
|
||
message (``str`` | :obj:`~telethon.tl.types.message`):
|
||
要发送的消息或消息对象。
|
||
|
||
消息的最大长度为 ``35,000`` 字节或 ``4,096`` 个字符。较长的消息不会自动分割,如果要发送的文本长于最大长度,则应手动分割。
|
||
|
||
reply_to (``int`` | :obj:`~telethon.tl.types.message`, *可选*):
|
||
要回复的消息 id 或者消息对象。
|
||
|
||
parse_mode (``str``, *可选*):
|
||
文本格式解析器配置。值支持 `markdown` (`md`), `html` (`htm`), `None`。
|
||
|
||
link_preview (``bool``, *可选*):
|
||
配置是否展示消息预览,默认开启。
|
||
|
||
buttons (``list``), *可选*):
|
||
配置消息按钮,参见示例,仅支持 bot 登录时。
|
||
|
||
限制:
|
||
最多可以有 ``100`` 个按钮(更多将被忽略)。
|
||
每行最多可以有 ``8`` 个按钮(更多将被忽略)。
|
||
按钮的最大回调数据为 ``64`` 字节。
|
||
|
||
silent (``bool``, *可选*):
|
||
配置是否静默消息,默认关闭。
|
||
|
||
schedule (``float``, *可选*):
|
||
配置是否定时消息,默认不配置。
|
||
|
||
返回:
|
||
:obj:`~telethon.tl.types.message`: 成功则将返回已发送的消息。
|
||
|
||
Example:
|
||
.. code-block:: python
|
||
|
||
# 默认使用 Markdown 解析器解析文本。
|
||
await client.send_message('me', 'Hello **world**!')
|
||
|
||
# 更改客户端的默认解析器。
|
||
client.parse_mode = 'html'
|
||
|
||
await client.send_message('me', 'Some <b>bold</b> and <i>italic</i> text')
|
||
await client.send_message('me', 'An <a href="https://example.com">URL</a>')
|
||
await client.send_message('me', '<a href="tg://user?id=me">Mentions</a>')
|
||
|
||
# 混合解析
|
||
client.parse_mode = None
|
||
|
||
# 手动配置单条消息的解析器为 Markdown 。
|
||
await client.send_message('me', 'Hello, **world**!', parse_mode='md')
|
||
|
||
# 手动配置单条消息的解析器为 Html 。
|
||
await client.send_message('me', 'Hello, <i>world</i>!', parse_mode='html')
|
||
|
||
# 如果使用 Bot 登录,则您可以使用按钮:
|
||
from telethon import events, Button
|
||
|
||
@client.on(events.CallbackQuery)
|
||
async def callback(event):
|
||
await event.edit('感谢点击 {}!'.format(event.data))
|
||
|
||
# 单个按钮
|
||
await client.send_message(chat, '只是一个会回调 "clk1" 的按钮。',
|
||
buttons=Button.inline('点我', b'clk1'))
|
||
|
||
# 多个按钮
|
||
await client.send_message(chat, '选一个吧!', buttons=[
|
||
[Button.inline('回调'), Button.inline('这是回调')],
|
||
[Button.url('访问网站', 'https://example.com')]
|
||
])
|
||
|
||
# 消息需要回复
|
||
await client.send_message(chat, '欢迎', buttons=[
|
||
Button.text('感谢!', resize=True, single_use=True),
|
||
Button.request_phone('发送电话号码'),
|
||
Button.request_location('发送位置')
|
||
])
|
||
|
||
# 强制回复或清除按钮。
|
||
await client.send_message(chat, '回复我', buttons=Button.force_reply())
|
||
await client.send_message(chat, '清楚按钮', buttons=Button.clear())
|
||
|
||
# 定时 5 分钟后发送消息
|
||
from datetime import timedelta
|
||
await client.send_message(chat, '你好,未来!', schedule=timedelta(minutes=5))
|
||
"""
|
||
|
||
def edit_message(self):
|
||
"""编辑指定消息,更改其文本或媒体文件。
|
||
|
||
参数:
|
||
entity (:obj:`~telethon.tl.types.user` | :obj:`~telethon.tl.types.chat` | :obj:`~telethon.tl.types.channel`):
|
||
接收消息的对象
|
||
|
||
text (``str``, *可选*):
|
||
要编辑的消息文本。
|
||
|
||
消息的最大长度为 ``35,000`` 字节或 ``4,096`` 个字符。
|
||
|
||
message (``int`` | ``str`` | :obj:`~telethon.tl.types.message`, *可选*):
|
||
要编辑的消息 id 或者消息对象。
|
||
|
||
parse_mode (``str``, *可选*):
|
||
文本格式解析器配置。值支持 `markdown` (`md`), `html` (`htm`), `None`。
|
||
|
||
link_preview (``bool``, *可选*):
|
||
配置是否展示消息预览,默认开启。
|
||
|
||
file (``str``, ``bytes``, *可选*):
|
||
如果参数为 ``str`` ,则将再此路径下寻找文件(支持相对/绝对路径)。
|
||
|
||
请注意:如果原消息为纯文本时,配置此项将会报错。
|
||
|
||
buttons (``list``), *可选*):
|
||
配置消息按钮,参见示例,仅支持 bot 登录时。
|
||
|
||
限制:
|
||
最多可以有 ``100`` 个按钮(更多将被忽略)。
|
||
每行最多可以有 ``8`` 个按钮(更多将被忽略)。
|
||
按钮的最大回调数据为 ``64`` 字节。
|
||
|
||
schedule (``float``, *可选*):
|
||
配置是否定时消息,默认不配置。
|
||
|
||
Raises:
|
||
MessageAuthorRequiredError: 如果您不是消息的发送者。
|
||
|
||
MessageNotModifiedError: 如果要编辑的消息和原消息一样。
|
||
|
||
MessageIdInvalidError: 如果消息的 ID 无效(消息 ID 本身可能是正确的,但无法编辑此 ID 对应的消息。)
|
||
|
||
Example:
|
||
.. code-block:: python
|
||
|
||
message = await client.send_message(chat, '你好')
|
||
|
||
await client.edit_message(chat, message, '你好!')
|
||
# 或者
|
||
await client.edit_message(chat, message.id, '你好!!')
|
||
# 或者
|
||
await client.edit_message(message, '你好!!!')
|
||
"""
|
||
|
||
def delete_messages(self):
|
||
"""删除指定消息。
|
||
|
||
参数:
|
||
entity (:obj:`~telethon.tl.types.user` | :obj:`~telethon.tl.types.chat` | :obj:`~telethon.tl.types.channel`):
|
||
接收消息的对象
|
||
|
||
message_ids (``list`` | ``int`` | :obj:`~telethon.tl.types.message`, *可选*):
|
||
要删除的消息 id 列表或者单个消息 id 或者消息对象。
|
||
|
||
Example:
|
||
.. code-block:: python
|
||
|
||
await client.delete_messages(chat, messages)
|
||
"""
|
||
|
||
def forward_messages(self):
|
||
"""转发指定消息。
|
||
|
||
参数:
|
||
entity (:obj:`~telethon.tl.types.user` | :obj:`~telethon.tl.types.chat` | :obj:`~telethon.tl.types.channel`):
|
||
接收消息的对象
|
||
|
||
message_ids (``list`` | ``int`` | :obj:`~telethon.tl.types.message`, *可选*):
|
||
要删除的消息 id 列表或者单个消息 id 或者消息对象。
|
||
|
||
from_peer (:obj:`~telethon.tl.types.user` | :obj:`~telethon.tl.types.chat` | :obj:`~telethon.tl.types.channel`):
|
||
指定转发消息的来源。如果 message_ids 传递的参数是数字。
|
||
|
||
silent (``bool``, *可选*):
|
||
配置是否静默消息,默认关闭。
|
||
|
||
schedule (``float``, *可选*):
|
||
配置是否定时消息,默认不配置。
|
||
|
||
返回:
|
||
:obj:`~telethon.tl.types.message`: 成功则将返回已转发的消息。(如果转发的是一组消息,则返回列表)
|
||
|
||
请注意:批量转发时,如果所有需要转发的消息都无效(即删除)则会抛出 ``MessageIdInvalidError`` 错误;
|
||
如果只有一些消息无效,则只是返回的列表中没有这些消息。
|
||
|
||
Raises:
|
||
MessageIdInvalidError: 如果消息的 ID 无效
|
||
|
||
Example:
|
||
.. code-block:: python
|
||
|
||
# 单条消息
|
||
await client.forward_messages(chat, message)
|
||
# 或者
|
||
await client.forward_messages(chat, message_id, from_chat)
|
||
# 或者
|
||
await message.forward_to(chat)
|
||
|
||
# 多条消息
|
||
await client.forward_messages(chat, messages)
|
||
|
||
# 作为一个副本发送(不带转发来源)
|
||
await client.send_message(chat, message)
|
||
"""
|
||
|
||
def iter_messages(self):
|
||
"""搜索指定对话中的消息。
|
||
|
||
参数:
|
||
entity (:obj:`~telethon.tl.types.user` | :obj:`~telethon.tl.types.chat` | :obj:`~telethon.tl.types.channel`):
|
||
需要检索的对话的对象
|
||
|
||
limit (``int`` | ``None``, *可选*):
|
||
限制要检索的消息数。由于API的限制,检索超过 ``3000`` 条消息将需要超过半分钟。
|
||
|
||
配置为 ``None`` ,并不会返回所有历史。
|
||
|
||
offset_date (``float``, *可选*):
|
||
将从此时间之前开始检索消息。
|
||
|
||
offset_id (``int``, *可选*):
|
||
将从此消息 id 之前开始检索消息。
|
||
|
||
max_id (``int``, *可选*):
|
||
配置要检索到的消息的最大 id 值。
|
||
|
||
min_id (``int``, *可选*):
|
||
配置要检索到的消息的最小 id 值。
|
||
|
||
search (``str``, *可选*):
|
||
配置检索的字符串。
|
||
|
||
filter (``MessagesFilter``, *可选*):
|
||
过滤消息类型。
|
||
|
||
from_user (:obj:`~telethon.tl.types.user`, *可选*)
|
||
指定消息发送者。
|
||
|
||
reverse (``bool``, *可选*):
|
||
如果设置为 ``True``,则消息将以相反的顺序返回。这意味着 ``offset_id`` 或者 ``offset_date`` 参数的含义是相反的。
|
||
``min_id`` 等同于 ``offset_id`` 。
|
||
|
||
reply_to (``int``, *可选*):
|
||
返回频道消息的所有评论消息。
|
||
|
||
此功能只能用于链接了某个频道的*讨论组*。在其他对话中使用它将抛出 ``PeridInValiderror`` 错误。
|
||
|
||
使用此参数时,``filter`` 和 ``search`` 参数无效,因为 Telegram 的 API 不支持搜索回复中的消息。
|
||
|
||
Yields:
|
||
|
||
消息对象 :obj:`~telethon.tl.types.message`
|
||
|
||
Raises:
|
||
|
||
PeridInValiderror: 此对话不是链接了频道的讨论组。
|
||
|
||
Example:
|
||
.. code-block:: python
|
||
|
||
# 从最新消息开始检索
|
||
async for message in client.iter_messages(chat):
|
||
print(message.id, message.text)
|
||
|
||
# 从第一条消息开始检索
|
||
async for message in client.iter_messages(chat, reverse=True):
|
||
print(message.id, message.text)
|
||
|
||
# 只返回我发送的消息
|
||
async for message in client.iter_messages(chat, from_user='me'):
|
||
print(message.text)
|
||
|
||
# 通过 Telegram 服务器检索匹配的文本消息
|
||
async for message in client.iter_messages(chat, search='hello'):
|
||
print(message.id)
|
||
|
||
# 检索特定类型的消息(例如:图片)
|
||
from telethon.tl.types import InputMessagesFilterPhotos
|
||
async for message in client.iter_messages(chat, filter=InputMessagesFilterPhotos):
|
||
print(message.photo)
|
||
|
||
# 检索指定频道消息的评论
|
||
async for message in client.iter_messages(channel, reply_to=123):
|
||
print(message.chat.title, message.text)
|
||
"""
|
||
|
||
def get_messages(self):
|
||
"""
|
||
和 .. automethod:: telethon.Client.iter_messages() 一样,但是返回的是一个 ``List`` 。
|
||
|
||
Example:
|
||
.. code-block:: python
|
||
|
||
# 获取对话所有照片数
|
||
from telethon.tl.types import InputMessagesFilterPhotos
|
||
photos = await client.get_messages(chat, None, filter=InputMessagesFilterPhotos)
|
||
print(photos.total)
|
||
|
||
# 通过消息 id 获取消息
|
||
message_1337 = await client.get_messages(chat, ids=1337)
|
||
"""
|
||
|
||
def pin_message(self):
|
||
"""置顶指定消息
|
||
|
||
参数:
|
||
entity (:obj:`~telethon.tl.types.user` | :obj:`~telethon.tl.types.chat` | :obj:`~telethon.tl.types.channel`):
|
||
需要置顶的对话的对象。
|
||
|
||
message (``int`` | ``None`` | :obj:`~telethon.tl.types.message`, *可选*):
|
||
要置顶的消息 id 或者消息对象。如果值为 ``None``,则将取消置顶所有消息。
|
||
|
||
notify (``bool``, *可选*):
|
||
配置是否通知群成员。与官方应用程序不同,默认不通知所有成员。
|
||
|
||
Example:
|
||
.. code-block:: python
|
||
|
||
# 置顶消息
|
||
message = await client.send_message(chat, 'Pinotifying is fun!')
|
||
await client.pin_message(chat, message, notify=True)
|
||
"""
|
||
|
||
def unpin_message(self):
|
||
"""取消置顶指定消息
|
||
|
||
参数:
|
||
entity (:obj:`~telethon.tl.types.user` | :obj:`~telethon.tl.types.chat` | :obj:`~telethon.tl.types.channel`):
|
||
需要取消置顶的对话的对象。
|
||
|
||
message (``int`` | ``None`` | :obj:`~telethon.tl.types.message`, *可选*):
|
||
要置顶的消息 id 或者消息对象。如果值为 ``None``,则将取消置顶所有消息。
|
||
|
||
Example:
|
||
.. code-block:: python
|
||
|
||
# 取消置顶所有消息
|
||
await client.unpin_message(chat)
|
||
"""
|
||
|
||
def send_read_acknowledge(self):
|
||
"""将消息标记为已读,可选择是否清除提及提示。
|
||
|
||
如果不提供消息和 ``max_id`` ,则将标记所有消息为已读。
|
||
|
||
参数:
|
||
entity (:obj:`~telethon.tl.types.user` | :obj:`~telethon.tl.types.chat` | :obj:`~telethon.tl.types.channel`):
|
||
需要标记已读的对话的对象。
|
||
|
||
message (``list`` | :obj:`~telethon.tl.types.message`, *可选*):
|
||
标记此消息及其之前的所有消息为已读。
|
||
|
||
max_id (``int``, *可选*):
|
||
标记此消息 id 及其之前的所有消息为已读。
|
||
|
||
clear_mentions (``bool``, *可选*):
|
||
配置是否清除提及按钮。
|
||
|
||
Example:
|
||
.. code-block:: python
|
||
|
||
# 使用消息对象
|
||
await client.send_read_acknowledge(chat, message)
|
||
# 或者使用消息 id
|
||
await client.send_read_acknowledge(chat, message_id)
|
||
# 或者已读所有消息
|
||
await client.send_read_acknowledge(chat, messages)
|
||
"""
|
||
|
||
# Upload
|
||
def send_file(self):
|
||
"""向指定对话发送文件。
|
||
|
||
.. note::
|
||
|
||
安装 ``hachoir3`` 包(``hachoir`` 模块),它可以被用于获取音频和视频元信息。
|
||
|
||
安装 ``pillow`` 包,它可以自动调整图片尺寸以支持 Telegram 上传,但是,如果使用 ``InputFile`` 发送图片,则无法完成。
|
||
|
||
参数:
|
||
entity (:obj:`~telethon.tl.types.user` | :obj:`~telethon.tl.types.chat` | :obj:`~telethon.tl.types.channel`):
|
||
需要发送文件的对话的对象。
|
||
|
||
file (``str`` | ``bytes`` | ``file`` | ``media``):
|
||
支持路径、包含文件的 ``bytes``、网络链接、``file_id``、文件句柄(例如 ``message.media``)。
|
||
|
||
caption (``str``, *可选*):
|
||
配置媒体文件的说明文字。
|
||
|
||
force_document (``bool``, *可选*):
|
||
强制以文件方式发送图片等。
|
||
|
||
reply_to (``int`` | :obj:`~telethon.tl.types.message`, *可选*):
|
||
要回复的消息 id 或者消息对象。
|
||
|
||
parse_mode (``str``, *可选*):
|
||
文本格式解析器配置。值支持 `markdown` (`md`), `html` (`htm`), `None`。
|
||
|
||
buttons (``list``), *可选*):
|
||
配置消息按钮,参见示例,仅支持 bot 登录时。
|
||
|
||
限制:
|
||
最多可以有 ``100`` 个按钮(更多将被忽略)。
|
||
每行最多可以有 ``8`` 个按钮(更多将被忽略)。
|
||
按钮的最大回调数据为 ``64`` 字节。
|
||
|
||
silent (``bool``, *可选*):
|
||
配置是否静默消息,默认关闭。
|
||
|
||
schedule (``float``, *可选*):
|
||
配置是否定时消息,默认不配置。
|
||
|
||
返回:
|
||
:obj:`~telethon.tl.types.message`: 如果成功则返回消息对象。
|
||
|
||
Example:
|
||
.. code-block:: python
|
||
|
||
# 图片文件
|
||
await client.send_file(chat, '/my/photos/me.jpg', caption="It's me!")
|
||
# 或者
|
||
await client.send_message(chat, "It's me!", file='/my/photos/me.jpg')
|
||
|
||
# 语音文件
|
||
await client.send_file(chat, '/my/songs/song.mp3', voice_note=True)
|
||
await client.send_file(chat, '/my/videos/video.mp4', video_note=True)
|
||
|
||
# 自定义缩略图
|
||
await client.send_file(chat, '/my/documents/doc.txt', thumb='photo.jpg')
|
||
|
||
# 文件
|
||
await client.send_file(chat, '/my/photos/photo.png', force_document=True)
|
||
|
||
# 图辑
|
||
await client.send_file(chat, [
|
||
'/my/photos/holiday1.jpg',
|
||
'/my/photos/holiday2.jpg',
|
||
'/my/drawings/portrait.png'
|
||
])
|
||
|
||
# 提示上传进度
|
||
def callback(current, total):
|
||
print('Uploaded', current, 'out of', total,
|
||
'bytes: {:.2%}'.format(current / total))
|
||
|
||
await client.send_file(chat, file, progress_callback=callback)
|
||
|
||
# 骰子,包括飞镖和其他动态表情符号
|
||
from telethon.tl import types
|
||
await client.send_file(chat, types.InputMediaDice(''))
|
||
await client.send_file(chat, types.InputMediaDice('🎯'))
|
||
|
||
# 联系人
|
||
await client.send_file(chat, types.InputMediaContact(
|
||
phone_number='+34 123 456 789',
|
||
first_name='Example',
|
||
last_name='',
|
||
vcard=''
|
||
))
|
||
"""
|
||
|
||
# Download
|
||
def download_media(self):
|
||
"""下载消息对象包含的媒体文件。
|
||
|
||
.. note::
|
||
|
||
如果下载太慢,则应考虑安装 ``cryptg`` (``pip3 install cryptg``)
|
||
|
||
参数:
|
||
entity (:obj:`~telethon.tl.types.user` | :obj:`~telethon.tl.types.chat` | :obj:`~telethon.tl.types.channel`):
|
||
需要发送文件的对话的对象。
|
||
|
||
file (``str`` | ``file``):
|
||
输出文件路径,目录或流等对象。如果该路径存在并且是文件,则将覆盖。
|
||
|
||
返回:
|
||
None: 如果消息中不存在媒体文件,如果为指定路径则将返回文件路径。
|
||
|
||
Example:
|
||
.. code-block:: python
|
||
|
||
path = await client.download_media(message)
|
||
await client.download_media(message, filename)
|
||
# 或者
|
||
path = await message.download_media()
|
||
await message.download_media(filename)
|
||
|
||
# 提示下载进度
|
||
def callback(current, total):
|
||
print('Downloaded', current, 'out of', total,
|
||
'bytes: {:.2%}'.format(current / total))
|
||
|
||
await client.download_media(message, progress_callback=callback)
|
||
"""
|
||
|
||
# Users
|
||
def get_me(self):
|
||
"""获取当前客户端所登录的用户信息。
|
||
|
||
返回:
|
||
:obj:`~telethon.tl.types.user`: 如果成功则返回用户对象。
|
||
|
||
Example:
|
||
.. code-block:: python
|
||
|
||
me = await client.get_me()
|
||
"""
|
||
|
||
def get_entity(self):
|
||
"""获取指定对话信息。
|
||
|
||
.. note::
|
||
|
||
使用此方法解析用户名不会自带缓存,对时间内您一般解析 ``50`` 个用户名就会收到请求过快错误。
|
||
推荐优先使用 .. automethod:: telethon.Client.get_input_entity() 来请求缓存的用户名数据。
|
||
|
||
参数:
|
||
entity (``str`` | ``int``):
|
||
需要获取的对话的对象。
|
||
|
||
Raise:
|
||
ValueError: 指定的对话不存在。
|
||
|
||
Return:
|
||
:obj:`~telethon.tl.types.user` | :obj:`~telethon.tl.types.chat` | :obj:`~telethon.tl.types.channel`: 如果请求成功。
|
||
|
||
Example:
|
||
.. code-block:: python
|
||
|
||
from telethon import utils
|
||
|
||
me = await client.get_entity('me')
|
||
print(utils.get_display_name(me))
|
||
|
||
chat = await client.get_input_entity('username')
|
||
async for message in client.iter_messages(chat):
|
||
...
|
||
|
||
# 可以直接使用用户名
|
||
async for message in client.iter_messages('username'):
|
||
...
|
||
|
||
# 请注意,您的联系人中必须拥有此电话号码才可以请求到数据。
|
||
some_id = await client.get_peer_id('+34123456789')
|
||
"""
|
||
|
||
def get_input_entity(self):
|
||
"""获取指定对话的对象。
|
||
|
||
参数:
|
||
entity (``str`` | ``int``):
|
||
需要获取的对话的对象。
|
||
|
||
Raise:
|
||
ValueError: 指定的对话不存在。
|
||
|
||
Example:
|
||
.. code-block:: python
|
||
|
||
user = await client.get_input_entity('username')
|
||
chat = await client.get_input_entity(-123456789)
|
||
"""
|