如何在Azure上部署基于Pyrogram的Python Telegram机器人?
在Azure部署Pyrogram Telegram机器人的正确步骤
一、准备工作
- 确保你有Azure账号,以及Telegram提供的
api_id、api_hash(从my.telegram.org获取)和bot_token(从@BotFather获取)。 - 修改机器人代码,从环境变量读取凭证(避免硬编码风险):
import os from pyrogram import Client, filters # 从环境变量加载Telegram凭证 api_id = int(os.getenv("TELEGRAM_API_ID")) api_hash = os.getenv("TELEGRAM_API_HASH") bot_token = os.getenv("TELEGRAM_BOT_TOKEN") app = Client("abc_bot", api_id=api_id, api_hash=api_hash, bot_token=bot_token) @app.on_message(filters.command("start")) def start_command(client, message): message.reply_text("Hello!") app.run()
- 创建
requirements.txt文件,明确项目依赖:
pyrogram[tgcrypto]>=2.0
二、推荐部署方案:Azure App Service(Web Apps)
这是适配Python控制台程序的轻量部署方式,操作步骤如下:
1. 创建Azure基础资源
可通过Azure CLI或Azure Portal操作,以下是CLI命令示例:
# 登录Azure账号 az login # 创建资源组(替换为你的资源组名和目标区域) az group create --name myBotResourceGroup --location eastus # 创建App Service计划(B1为基础付费层,Linux环境更适配Python) az appservice plan create --name myBotPlan --resource-group myBotResourceGroup --sku B1 --is-linux # 创建Web App(替换为你的唯一App名称) az webapp create --name myUniqueTelegramBot --resource-group myBotResourceGroup --plan myBotPlan --runtime "PYTHON|3.10"
2. 配置环境变量
将Telegram凭证设置为App Service的环境变量:
az webapp config appsettings set --name myUniqueTelegramBot --resource-group myBotResourceGroup --settings TELEGRAM_API_ID=你的api_id TELEGRAM_API_HASH=你的api_hash TELEGRAM_BOT_TOKEN=你的bot_token
3. 设置启动命令
由于机器人是长运行的控制台程序,需要覆盖App Service默认的Web服务启动逻辑:
az webapp config set --name myUniqueTelegramBot --resource-group myBotResourceGroup --startup-file "python main.py"
4. 开启Always On
防止App Service因长时间无请求休眠导致机器人停止:
az webapp config set --name myUniqueTelegramBot --resource-group myBotResourceGroup --always-on true
5. 部署代码
进入本地项目目录(包含main.py和requirements.txt),执行以下命令完成部署:
az webapp up --name myUniqueTelegramBot --resource-group myBotResourceGroup --sku B1
三、备选方案:Azure Container Apps
如果需要自定义运行环境,可采用容器部署:
1. 创建Dockerfile
FROM python:3.10-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY main.py . # 推荐部署后通过Azure设置环境变量,避免硬编码凭证 CMD ["python", "main.py"]
2. 构建并部署镜像
按照Azure文档完成镜像构建、推送至Azure Container Registry,再部署到Container Apps并配置对应环境变量即可。
四、常见问题排查
- 机器人启动失败:查看App Service的日志流(Portal → App Service → 日志流),排查依赖安装错误、凭证错误或网络连接问题。
- 机器人无响应:确认
Always On已开启,且启动命令正确设置为python main.py。 - 依赖安装失败:确保
requirements.txt中包含pyrogram[tgcrypto],遗漏tgcrypto会导致连接性能或稳定性问题。
内容的提问来源于stack exchange,提问作者Yeshpal Singh
相关产品推荐
相关产品推荐

