使用 Telegram 机器人发送消息

2019年1月29日


# Python # Telegram

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

参考 https://github.com/python-telegram-bot/python-telegram-bot https://core.telegram.org/bots/api

前提条件

  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
# 替换为实际的 token
bot = telegram.Bot(token='012345678:xxxxxxxxxxxxxxxxx-xxxxxxxxxx-xxxxxx')
  • 发送简单文本消息
bot.send_message(chat_id='@XXXXXX', text="新消息")
  • 发送带标题网址链接
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='@XXXXXX',
    text='<a href="' + href + '">' + title + '</a>.',
    parse_mode=telegram.ParseMode.HTML,
    disable_web_page_preview=True)
  • 其它文字样式
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=新消息>