初试TelegramBot
本文最后更新于 356 天前,其中的信息可能已经有所发展或是发生改变。

今天早上班上同学心血来潮,建了个tg班群,并有人拉了一个查课表的机器人进群。我觉得很好玩,所以研究了一下,收获很多!

Telegram官方有很清晰易懂的机器人文档,所以实现起来也并不复杂。

先放参考文档:

Telegram Bot 使用文档 - KainHuck - 博客园 (cnblogs.com)

Flask request和requests(客户端服务器)_flask requests-CSDN博客

Ubuntu上安装和配置Supervisor_ubuntu supervisor-CSDN博客

—————————————————————分割线——————————————————————

首先,Telegram有专门的Bot类型账号,并且官方说明使用真人账号做机器人可能被封禁。因此我们选择使用官方的Bot账号。

第一步是创建一个Bot账号,首先添加@BotFather,即官方的Bot创建账号。输入指令/newbot,然后输入机器人的昵称以及账号,最终得到一串Token(如下图),机器人的创建步骤结束。

第二步自然就是用官方提供的文档来进行程序编写了。如果不想看英文文档可以看我上面的参考文献第一条。在编写之前请确保你已经会编写HTTP请求程序。此处不过多介绍程序写法。值得一提的是telegram使用webhook(且必须https,后面会讲到)通知消息更新。为了方便我们使用Python+Flask实现,以下是一个简单的复读机机器人服务端程序(将<Token>修改为刚才获得的机器人Token):

import json, requests
from flask import Flask, request

app = Flask(__name__)

API_URL = 'https://api.telegram.org/bot<Token>'


def sendMessage(chat_id, text):
    requests.get(f'{API_URL}/sendMessage', params={
        'char_id': chat_id,
        'text': text
    })


@app.route("/webhook/event", methods=['POST'])
def event():
    data = request.json
    text = "我现在只能读文字噢"
    if 'text' in data['message']:
        text = data['message']['text']
    sendMessage(str(data['message']['chat']['id']), text)
    return json.dumps(data)


if __name__ == '__main__':
    app.run(port=8443)

在编写完成之后就是云服务器部署环节。此处演示在Ubuntu系统下的部署步骤(Windows显然会更加简单)

1.安装Python3

首先更新软件包列表:

sudo apt update

安装Python3:

sudo apt install python3

检查是否安装成功:

python3 --version

2.安装依赖库

上面的示例程序仅使用了Flask以及requests,如果你在编写过程中使用了其他库也应该一并安装。

首先安装pip:

sudo apt-get install python3-pip

检查是否成功安装:

pip --version

安装Flask:

pip install Flask

安装requests:

pip install requests

3.配置反向代理及https

由于Telegram强制使用https访问webhook,这里采用反向代理+ssl的方式实现。新建网站反向代理127.0.0.1:8443,再配置证书,此处不做演示。

4.配置进程守护

安装Supervisor

sudo apt install supervisor

检查状态:

sudo systemctl status supervisor

然后将server.py程序上传至服务器任意目录。

由于我使用1panel,可以直接在面板出添加supervisor守护进程,目录填写绝对路径,启动命令填写python3 server.py

点击右方日志查看进程日志,查看是否正常启动运行:

出现Flask字样即为正常启动。

随后就可以打开tg给机器人发消息测试啦。其他功能可以参照官方文档编写噢!

你刚刚浪费了人生中宝贵的几分钟。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇