使用 Telegram 机器人发送消息

2019年1月29日


# Python # Telegram

通过调用 API, Telegram Bot 可以用于发送消息/文件,以及投票等各种可能的操作。

前提条件

  1. 已经注册 Telegram 账号;
  2. 账号最好绑定一个国外手机号(非必要条件),比如 Google Voice,这样与其他用户发送消息不受限制;

注册一个机器人(Bot)

注册过程很简单,在 telegram 中添加一个“机器人之父”的账号,便是 @BotFather 这个账号:

  1. 打开与 @BotFather 的对话框
  2. 发送/start
  3. 发送/newbot
  4. 发送 Bot 的名字(昵称)
  5. 指定 Bot 的用户名(ID)
  6. 得到 Bot 的 token,用于标识这个 Bot
  7. 完成

创建一个 Telegram 群组/频道

一般将机器人用于在群组/频道内自动推送消息或者回答问题,需要在 Telegram 软件内创建一个群组或者频道,移动端/PC/WEB端均可操作,设定群组/频道的唯一ID,例如 @XXXXXX 。

使用 python-telegram-bot 库

python-telegram-bot 库可以帮助开发者快速操作官方 API,GitHub 地址: https://github.com/python-telegram-bot/python-telegram-bot

安装

pip install python-telegram-bot --upgrade

实现

import telegram
bot = telegram.Bot(token='012345678:xxxxxxxxxxxxxxxxx-xxxxxxxxxx-xxxxxx') # 替换为实际的 token

# 发送简单文本消息
bot.send_message(chat_id='@XXXXXX', text="新消息")  # 替换为实际的频道 ID(英文唯一标识)

# 发送带标题网址链接
bot.send_message(chat_id='@XXXXXX',
    text='<a href="http://slowread.net/monitor-hostloc/">HOSTLOC 交易贴提醒</a>.', 
    parse_mode=telegram.ParseMode.HTML)

# 其它文字样式
bot.send_message(chat_id=chat_id, text='<b>bold</b> <i>italic</i> 
    <a href="http://google.com">link</a>.', parse_mode=telegram.ParseMode.HTML)

# 发送图片
bot.send_photo(chat_id=chat_id, photo='https://telegram.org/img/t_logo.png')
bot.sendPhoto(chat_id="_your channel name here... example: @Linuxgram", 
    photo="https://telegram.org/img/t_logo.png", caption="Sample photo")

直接使用 Telegram API 例子

https://api.telegram.org/bot012345678:xxxxxxxxxxxxxxxxx-xxxxxxxxxx-xxxxxx/[email protected]&text=新消息