Telegram及Telegram Bot使用指南

  1. 1. Telegram简介
    1. 1.1 Telegram是什么
    2. 1.2 Telegram客户端界面
    3. 1.3 Telegram注意事项
  2. 2. Telegram基本使用
    1. 2.1 下载安装、配置代理
    2. 2.2 客户端汉化
    3. 2.3 频道推荐
    4. 2.4 创建聊天分组
    5. 2.5 解除+86号码私聊限制
    6. 2.6 导出Telegram贴纸
  3. 3. Telegram Bot入门指南
    1. 3.1 申请自己的 Telegram Bot
      1. 3.1.1 申请 Telegram Bot
      2. 3.1.2 修改 Telegram Bot 头像
    2. 3.2 向 Telegram Bot 推送消息
      1. 3.2.1 以命令的方式推送消息
      2. 3.2.2 以脚本的方式推送消息
      3. 3.2.3 借助 Crontab 实现定时推送
    3. 3.3 开发 Telegram Bot 程序
      1. 3.3.1 开发 Telegram Bot 程序的API库
      2. 3.3.2 使用Python开发 Telegram Bot 程序
  4. 4. 参考资料

1. Telegram简介

1.1 Telegram是什么

Telegram(简称TG)是跨平台的即时通信软件,其客户端是自由及开放源代码软件,但服务器是专有软件。用户可以相互交换加密与自毁消息,发送照片、影片所有类型文件。官方提供手机版、桌面版和网页版等多种平台客户端,同时官方开放API,因此拥有许多第三方的客户端可供选择,其中多款内置中文。

  • 软件定位:加密通讯工具。

  • 软件用途:点对点加密通讯,了解IT行业趋势,交流技术问题,获取生活娱乐资源。

  • 软件优势:加密通讯、全平台同步、历史记录永不自动删除、随时删除或修改消息、传输文件无限制、链接摘要预览、已阅显示、10W人上限的超大群组、收藏贴纸方便、UI好看、轻量、永久无广告。

  • 软件劣势:软件需翻墙才能使用,导致国内社交圈子几乎没有人用;无管制所以什么样的人都有,有些不健康的东西不利于祖国花骨朵的成长;有些技术群组是外文的,没有内置的翻译功能。

1.2 Telegram客户端界面

image-20210630181726674

1.3 Telegram注意事项

1)该软件需要翻墙才能使用;2)里面所有个人信息都不要填真实的;3)隐私全部设置为不允许任何人或者仅联系人可见;4)默认6个月不登录自动删除账号,最长可更改为1年;5)黑产、色情、邪教的频道不要关注,不要发表政治言论。

2. Telegram基本使用

2.1 下载安装、配置代理

1)PC端:Telegram官网下载 安装并完成信息注册后,需要开启代理才能使用。

  • 设置——高级——网络与代理——使用自定义代理——添加代理——协议:SOCKS5、IP:127.0.0.1、端口:1080(以实际为准)

  • 另注:也可在“设置——高级——网络与代理”处直接使用“系统代理设置”,就不用配置自定义代理了。

2)iPad端和iPhone端:直接在App Store下载(国区就有,无需美区账号),开了代理工具就能用,无需额外配置代理。

2.2 客户端汉化

默认语言选项里没有中文,需要自行汉化,各客户端均是如此。

汉化方法:打开 https://telegram.me/Tele_zh_CN 加入“电报简体中文化”频道,找一个看的顺眼的语言包点一下就可以汉化了。

  • 例如:我找的是2019.4.16的消息记录,点击“简体中文(@zh_CN 版):tg://setlanguage?lang=classic-zh-cn”语言包一键汉化。

说明:Telegram 官方只开放了语言包翻译接口,官方没有提供中文语言包,目前所有的中文语言包都是非官方用户翻译的。

2.3 频道推荐

[1] Telegram频道推荐的博客:Telegram群组/频道/机器人推荐 from Newlearnerの小站

[2] Telegram频道搜索机器人:https://t.me/soqun

注:需要啥频道,可以直接在Telegram的搜索框里搜。

2.4 创建聊天分组

由于Telegram只允许设置5个置顶消息,因此有必要创建聊天分组对消息进行分类。

设置——文件夹——设置新的文件夹

2.5 解除+86号码私聊限制

1)问题描述:

Telegram发送私聊消息时遇到如下Sorry,you can only send messages to mutual contacts at the momet.提示,对方收不到消息。

2)原因:

有段时间币圈利用 Telegram 的便利,大量发广告和拉人进群。因此 Telegram 限制了+86 大陆手机号绑定的账号的私聊(+86 的账号不能给非 +86 的账号主动发起私聊,但是 +86 的账号能给 +86 主动发起私聊),刚注册的+86 账号也不能发起私聊的,过段时间就OK了。

3)解决办法:

向官方机器人@SpamBot 发送消息申请(跟着提示操作就行),半小时左右即可解除限制。

  • Step1:发送内容 /start
  • Step2:点击按钮 But I can’t message non-contacts!
  • Step3:点击按钮 NO,I’ll never do any of this!
  • Step4:发送内容 accident

注:为了更好的保护个人隐私,建议使用 Temporary SMS and Disposable Numbers 获取虚拟的美国电话号码注册Telegram

2.6 导出Telegram贴纸

[1] 在Telegram中搜索@StickerSetBot 机器人

[2] 输入 /newpack 开启机器人,会提示 OK now send me stickers or sticker set links (200 max). 意思是现在可以开始发送要导出的贴纸或贴纸设置链接,一次有200张的限制

[3] 选择需要导出的贴纸包,点“分享贴纸”按钮,即可生成贴纸分享链接,将此链接发送给机器人

[4] 发送完成后输入 /finish 结束,等待下载完成即可(以压缩包的形式下载到TG的下载目录中)

3. Telegram Bot入门指南

3.1 申请自己的 Telegram Bot

3.1.1 申请 Telegram Bot

找 BotFather 官方机器人申请自己的 Telegram Bot,需要记录下:BotName、TOKEN、CHATID等信息。

  • Step1:在Telegram中添加BotFather这个账号,然后依次发送/start/newbot,按照提示即可创建一个新的机器人。记下来给你生成的token。
  • Step2:搜索刚刚创建的机器人的名字,并给它发送一条消息。(注意:需要先与机器人之间创建会话,机器人才能下发消息,否则机器人无法主动发送消息)
  • Step3:在Telegram中搜索userinfobot,并给它发送一条消息,它会返回给你chatid,将它也记下来。

3.1.2 修改 Telegram Bot 头像

还是找 BotFather 官方机器人,先发送/setuserpic,它会让你选择为哪个Bot修改,选择完之后发送头像图片给它即可。

注:头像以图片的形式发送,不要以文件的形式发送(发送时点上那个压缩图片即为图片的形式发送)

3.2 向 Telegram Bot 推送消息

3.2.1 以命令的方式推送消息

向 Telegram Bot 推送文本消息的命令为:

1
$ curl -s -X POST "URL" -d chat_id="CHAT_ID" -d text="MESSAGE"

用VPS发送该命令后,Telegram Bot里就收到了我们发送的测试消息了。

3.2.2 以脚本的方式推送消息

在VPS上创建一个testbot.sh脚本,内容如下:

1
2
3
4
5
6
7
8
#!/bin/bash

TOKEN=<TOKEN>
CHAT_ID=<CHAT_ID>
MESSAGE="Hello World"
URL="https://api.telegram.org/bot$TOKEN/sendMessage"

curl -s -X POST $URL -d chat_id=$CHAT_ID -d text="$MESSAGE"

然后使用chmod u+x testbot.sh赋予其可执行权限,再使用./testbot.sh调用,这时Telegram Bot里就收到了我们发送的测试消息了。

3.2.3 借助 Crontab 实现定时推送

我们可以借助 Crontab 定时任务去实现定时的消息推送。

1
$ crontab -e

然后添加类似如下代码保存即可:

1
59 23 * * * 脚本路径/testbot.sh

crontab 相关命令:

1
2
3
4
crontab [-u username]    // 省略用户表表示操作当前用户的crontab
-e (修改 crontab 文件,如果文件不存在会自动创建)
-l (显示 crontab 文件)
-r (删除 crontab 文件)

crontab 定时任务语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
定时任务的每段为:分,时,日,月,周,用户,命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

*:表示任意时间都,实际上就是“每”的意思。可以代表00-23小时或者00-12每月或者00-59分
-:表示区间,是一个范围,00 17-19 * * * cmd,就是每天17,18,19点的整点执行命令
,:是分割时段,30 3,19,21 * * * cmd,就是每天凌晨3和晚上19,21点的半点时刻执行命令
/n:表示分割,可以看成除法,*/5 * * * * cmd,每隔五分钟执行一次

crontab定时任务实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
实例1:每1分钟执行一次myCommand
* * * * * myCommand
实例2:每小时的第3和第15分钟执行
3,15 * * * * myCommand
实例3:在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * myCommand
实例4:每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * myCommand
实例5:每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand
实例6:每晚的21:30重启smb
30 21 * * * /etc/init.d/smb restart
实例7:每月1、10、22日的4 : 45重启smb
45 4 1,10,22 * * /etc/init.d/smb restart
实例8:每周六、周日的1 : 10重启smb
10 1 * * 6,0 /etc/init.d/smb restart
实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 * * * /etc/init.d/smb restart
实例10:每星期六的晚上11 : 00 pm重启smb
0 23 * * 6 /etc/init.d/smb restart
实例11:每一小时重启smb
* */1 * * * /etc/init.d/smb restart
实例12:晚上11点到早上7点之间,每隔一小时重启smb
* 23-7/1 * * * /etc/init.d/smb restart

3.3 开发 Telegram Bot 程序

Telegram 官方为了让开发者能够参与到机器人的开发,还免费提供了功能齐全的 API,我们可以用它创建自己的机器人,下面介绍下如何创建和部署机器人程序。

3.3.1 开发 Telegram Bot 程序的API库

Github 上有很多用于开发 Telegram Bot 的API库,可以选择自己擅长的语言进行开发。

官方API库:

第三方API库:

3.3.2 使用Python开发 Telegram Bot 程序

以下使用 pyTelegramBotAPI 开发自己的 Telegram Bot 程序,建议使用 Pycharm 进行开发。

在开始开发之前,我们首先需要安装以下两个依赖包:

1
2
$ pip install pyTelegramBotAPI       # telebot     
$ pip install python-telegram-bot # telegram.ext

下面给出一个简单的 Telegram Bot 例子,需要注意的是,如果是在国内,需要将翻墙代理的设置写到代码里。

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
from telebot import logger   
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters

def start(update, context):
update.message.reply_text('Hi!')

def help(update, context):
update.message.reply_text('Help!')

def echo(update, context):
update.message.reply_text(update.message.text)

def error(update, context):
logger.warning('Update "%s" caused error "%s"', update, context.error)

if __name__ == '__main__':
updater = Updater('<token>', use_context=True, request_kwargs={
'proxy_url': 'HTTPS://127.0.0.1:1080/'
})

dispatcher = updater.dispatcher

dispatcher.add_handler(CommandHandler("start", start))
dispatcher.add_handler(CommandHandler("help", help))

dispatcher.add_handler(MessageHandler(Filters.text, echo))

dispatcher.add_error_handler(error)

updater.start_polling()
updater.idle()

运行之后,便可打开你的 Telegram Bot 进行测试了,输入/start/help命令后,它会自动给你消息回应。

4. 参考资料

[1] 自由与失控:Telegram创始人和他的“黑客帝国” from 知乎

[2] Telegram——真正定义即时通讯 from 知乎

[3] Telegram群组/频道/机器人推荐 from Newlearnerの小站

[4] 导出Telegram贴纸为QQ表情包 from 小马哥哥

[5] 解除 Telegram +86号码私聊限制 from VPS收割者

[6] Telegram 聊天分组功能:添加聊天文件夹并对群组频道进行分组 from 老唐笔记

[7] telegram-bot推送通知 from New Life

[8] Telegram Bot 使用文档 from cnblogs

[9] Telegram APIs from Telegram官方文档

[10] Telegram 机器人程序开发 from 风行’s Blog