Telegram及Telegram Bot使用指南

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