电报机器人开发日常

Telegram 机器人单向通知脚本:全面格式示例

以下是一个可发送多种格式消息(如文本、图片、视频、文件、音频等)的完整示例,适用于单向通知的 Telegram 机器人。

脚本代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import os
from telegram import Bot, ParseMode, InputMediaPhoto, InputMediaVideo

# 从环境变量中获取 Token 和目标用户 ID
TELEGRAM_TOKEN = os.getenv("TELEGRAM_TOKEN")
TARGET_CHAT_ID = os.getenv("TARGET_CHAT_ID")

# 初始化 Bot
bot = Bot(token=TELEGRAM_TOKEN)

def send_text_message(message_template, parse_mode=ParseMode.MARKDOWN, **kwargs):
"""发送格式化文本消息。"""
message = message_template.format(**kwargs)
bot.send_message(chat_id=TARGET_CHAT_ID, text=message, parse_mode=parse_mode)

def send_photo(photo_url, caption=None):
"""发送图片消息。"""
bot.send_photo(chat_id=TARGET_CHAT_ID, photo=photo_url, caption=caption)

def send_video(video_url, caption=None):
"""发送视频消息。"""
bot.send_video(chat_id=TARGET_CHAT_ID, video=video_url, caption=caption)

def send_document(document_path, caption=None):
"""发送文件消息。"""
with open(document_path, 'rb') as file:
bot.send_document(chat_id=TARGET_CHAT_ID, document=file, caption=caption)

def send_audio(audio_url, caption=None):
"""发送音频消息。"""
bot.send_audio(chat_id=TARGET_CHAT_ID, audio=audio_url, caption=caption)

def send_media_group(media_list):
"""发送媒体组(多张图片或视频)。"""
bot.send_media_group(chat_id=TARGET_CHAT_ID, media=media_list)

if __name__ == "__main__":
# 示例 1:发送 Markdown 格式文本消息
markdown_message = (
"*通知标题:*\n"
"任务:`数据处理`\n"
"状态:_已完成_\n"
"[详细信息](https://example.com)"
)
send_text_message(markdown_message, parse_mode=ParseMode.MARKDOWN)

# 示例 2:发送 HTML 格式文本消息
html_message = (
"<b>通知标题:</b><br>"
"任务:<code>数据处理</code><br>"
"状态:<i>已完成</i><br>"
"<a href='https://example.com'>详细信息</a>"
)
send_text_message(html_message, parse_mode=ParseMode.HTML)

# 示例 3:发送图片
send_photo("https://example.com/image.jpg", caption="这是一个图片示例")

# 示例 4:发送视频
send_video("https://example.com/video.mp4", caption="这是一个视频示例")

# 示例 5:发送文件
send_document("path/to/your/document.pdf", caption="这是一个文件示例")

# 示例 6:发送音频
send_audio("https://example.com/audio.mp3", caption="这是一个音频示例")

# 示例 7:发送多媒体组(多张图片或视频)
media_group = [
InputMediaPhoto("https://example.com/image1.jpg", caption="图片1"),
InputMediaPhoto("https://example.com/image2.jpg", caption="图片2"),
InputMediaVideo("https://example.com/video1.mp4", caption="视频1"),
]
send_media_group(media_group)

各格式说明与示例

功能 方法 说明 示例参数
文本消息 send_text_message 支持 Markdown 和 HTML 格式 *加粗文本*<b>加粗文本</b>
图片消息 send_photo 发送远程 URL 或本地图片路径 photo_url="https://example.com/image.jpg"
视频消息 send_video 发送远程 URL 或本地视频文件 video_url="https://example.com/video.mp4"
文件消息 send_document 发送本地文件(PDF、文档等) document_path="path/to/your/document.pdf"
音频消息 send_audio 发送远程 URL 或本地音频文件 audio_url="https://example.com/audio.mp3"
多媒体组 send_media_group 发送多个图片或视频(需提供列表) [InputMediaPhoto(...), InputMediaVideo(...)]

各格式示例效果

1. 文本消息示例

  • Markdown 格式:

    1
    2
    3
    4
    *通知标题:*
    任务:`数据处理`
    状态:_已完成_
    [详细信息](https://example.com)
  • HTML 格式:

    1
    2
    3
    4
    <b>通知标题:</b>
    任务:<code>数据处理</code>
    状态:<i>已完成</i>
    <a href="https://example.com">详细信息</a>

2. 图片消息示例

发送一张图片:

1
Caption: 这是一个图片示例

3. 视频消息示例

发送一个视频:

1
Caption: 这是一个视频示例

4. 文件消息示例

发送一个 PDF 文件:

1
Caption: 这是一个文件示例

5. 音频消息示例

发送一个音频文件:

1
Caption: 这是一个音频示例

6. 多媒体组示例

发送多张图片或视频:

1
2
3
Caption (图片1): 图片1
Caption (图片2): 图片2
Caption (视频1): 视频1

注意事项

  1. 本地文件路径:确保本地文件路径正确,文件存在且有读取权限。
  2. 远程文件 URL:确保链接可访问,文件格式符合 Telegram 支持的格式。
  3. 消息格式选择ParseMode.MARKDOWN 支持简单标记,ParseMode.HTML 支持更多样式。

通过这些示例,你可以灵活实现文本、媒体、超链接等多种类型的通知消息发送。