本教程特别简单 只要你认真看看谁都能搭建
首先我们要区分什么是 用本地来跑 和用电脑来跑还有用服务器来跑 
本地跑就是只用了终端 

先把机器人创建出来 搜索框 搜索@BotFather 
"@BotFather"(带蓝色对勾认证认证 别搜错)
点 Start开始 
/newbot

它会问你两样:
- Display name(显示名,随便,比如 
"张三的机器人")
- Username(用户名,必须以 
"bot" 结尾,比如 
"aqiang_helper_bot",不能跟别人重复

搞定之后 BotFather 会回你一行类似这样的东西
123456789:ABCDefGHIjklMNOpqrsTUVwxyz
这就是 Token(钥匙)谁拿到谁就能控制你机器人  别传出去 别传 GitHub 也不要乱发给别人

如果 token 搞丢了:
"/mybots" → 选你的 bot → API Token 里能看到/重刷/revoke
"/setdescription" → 设置用户第一次点开你 bot 时看到的简介
"/setabouttext" → 资料卡那行短介绍

"/setuserpic" → 传张头像图

二、 对接 到底是怎么对接?api怎么使用?

Telegram 那边只负责把用户消息送到你这边。你这边要写一个 Python 程序,它做两件事:

1. 拿到消息(通过 Token 跟 TG 通讯)
2. 判断消息 → 决定回什么 → 调 TG 的 API 把内容发出去
有4种对接方式
终端方法:
长轮询(polling)——最省事,你本机/有 VPS 时首选
你的脚本一直挂着,每隔一小会儿问 TG:"有新消息没?"
优点:不用域名、不用 HTTPS,写出来就能跑
缺点:得有个地方让它一直活着

网站托管:
Webhook ——想挂 PythonAnywhere 免费版的话 基本要使用这个
TG 不直接让你"问" 而是有消息就 POST 到你一个公网网址
所以你要在 PythonAnywhere 上挂一个 Flask 小网站当接收器
唯独缺点:稍微多几步;优点:正经、省资源、不掉线感没那么强
终端服务器:
终端服务器主要就是 自己购买一个终端服务器     或者是用其他免费终端服务器 免费终端服务器内存没这么大只能用 外接的数据库
电脑跑:
1. 打开cmd(Win+R → 输入
"cmd" → 回车)
2. 装库(输入后回车):
pip install python-telegram-bot
3. 创建文件(输入后回车):
notepad bot.py
把下面代码粘进去,把 
"你的Token" 换成真的,保存关闭:
TOKEN="你的Token"
from telegram.ext import*
async def s(u,c):await u.message.reply_text("ok")
async def m(u,c):await u.message.reply_text(u.message.text)
ApplicationBuilder().token(TOKEN).add_handler(CommandHandler("start",s)).add_handler(MessageHandler(filters.TEXT,m)).build().run_polling()
运行(输入后回车):
python bot.py 
名称可以自己随便弄
确保可以正常跑起来

三、最快能跑起来的版本(polling,你先在电脑上验证用)
装库:

pip install python-telegram-bot --upgrade

"bot.py":

import os
from telegram import Update
from telegram.ext import (
    ApplicationBuilder, CommandHandler,
    MessageHandler, ContextTypes, filters
)

TOKEN = "这里贴你的Token"

async def start(update: Update, _):
    await update.message.reply_text("哟,醒了 👋\n发句话试试?")

async def handle_text(update: Update, _):
    txt = update.message.text
    # 你后面自己的逻辑就在这接住 txt,爱咋处理咋处理
    await update.message.reply_text(f"收到:{txt}")

def main():
    app = ApplicationBuilder().token(TOKEN).build()
    app.add_handler(CommandHandler("start", start))
    app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_text))
    app.run_polling()

if __name__ == "__main__":
    main()

跑起来后,去 TG 搜你那个 
"xxx_bot" 用户名 → Start → 打字,看它回你。

四、你要挂 PythonAnywhere 的话:Webhook 怎么接(核心就这几步)

1)PythonAnywhere 上准备好 Flask

在 PA 的 Files 里新建 
"flask_app.py"(或者本地写好传上去):

pip install flask python-telegram-bot --upgrade

最小化可工作的 webhook 骨架:

import json
import logging
import os
from flask import Flask, request

from telegram import Update, Bot
from telegram.ext import (
    ApplicationBuilder, ContextTypes,
    CommandHandler, MessageHandler, filters
)

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

TOKEN = os.environ.get("TG_BOT_TOKEN") or "你的Token"
# PythonAnywhere 给你的公网地址(别写 https,Flask 本身跑在 PA 的 nginx 后面)
PA_URL = "https://你的用户名.pythonanywhere.com"

bot = Bot(TOKEN)
app_telegram = ApplicationBuilder().token(TOKEN).build()

# ---- 你的业务逻辑 ----
async def start(update: Update, _):
    await update.message.reply_text("webhook 版 bot 上线了 ✅")

async def on_text(update: Update, _):
    await update.message.reply_text(f"你发的:{update.message.text}")

app_telegram.add_handler(CommandHandler("start", start))
app_telegram.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, on_text))

# ---- Flask 收件口 ----
flask_app = Flask(__name__)

@app.route("/webhook", methods=["POST"])
def telegram_webhook():
    data = request.get_json(force=True)
    update = Update.de_json(data, bot)
    # PTB 内部会把 update 分派到你注册的 handler
    import asyncio
    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    loop.run_until_complete(app_telegram.process_update(update))
    return "ok"

# 一键设置 webhook(浏览器访问一次就行)
@app.route("/setwh", methods=["GET"])
def set_wh():
    from telegram.request import HTTPXRequest
    ok = bot.set_webhook(f"{PA_URL}/webhook")
    return f"set_webhook result: {ok}"

2)在 PythonAnywhere 的 Web 标签页

- Add a new web app → Manual configuration → 选你用的 Python 版本
- 编辑它的 WSGI 配置文件,指向你的 Flask 的 
"app"(就是 
"flask_app.app" 那个对象)
- Reload

3)浏览器访问一次

https://你的用户名.pythonanywhere.com/setwh

返回成功就说明 TG 已经知道往你这儿推消息了。

五、你后面自己写"对接逻辑"时记住一句话就行了

你唯一需要盯住的入口就是 
"update.message.text"(或 
"update.callback_query" 如果是按钮),拿到它就随便你怎么玩:查数据库、调接口、拼回复、发图片都行,最后 
".reply_text()" / 
".edit_message_text()" / 
"bot.send_*" 交回给 TG。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐