send_message()

Client.send_message()

向指定的用户,群组或频道发送消息。

默认文本解析模式与官方应用程序相同(Markdown)

向 bot 发送 start 参数命令 (例如 ?start=data) 同样可行,请直接发送 /start data

参数:
entity (user | chat | channel):

接收消息的对象

message (str | message):

要发送的消息或消息对象。

消息的最大长度为 35,000 字节或 4,096 个字符。较长的消息不会自动分割,如果要发送的文本长于最大长度,则应手动分割。

reply_to (int | message, 可选):

要回复的消息 id 或者消息对象。

parse_mode (str, 可选):

文本格式解析器配置。值支持 markdownmd), htmlhtm), None

link_preview (bool, 可选):

配置是否展示消息预览,默认开启。

buttons (list), 可选):

配置消息按钮,参见示例,仅支持 bot 登录时。

限制:

最多可以有 100 个按钮(更多将被忽略)。 每行最多可以有 8 个按钮(更多将被忽略)。 按钮的最大回调数据为 64 字节。

silent (bool, 可选):

配置是否静默消息,默认关闭。

schedule (float, 可选):

配置是否定时消息,默认不配置。

返回:

message: 成功则将返回已发送的消息。

示例

# 默认使用 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))