You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask中Python变量数据导入HTML列表的实现及Telegram机器人管理相关问题

解决你的Flask项目问题&机器人管理工具推荐

一、把Python变量渲染为HTML列表&修复botstatus显示异常

你当前遇到的显示异常,核心原因是直接把Python列表通过{{ botstatus }}输出时,Jinja2会把它转换成原生字符串格式(比如['bot1', 'bot2']),而非标准HTML列表。我们需要用Jinja2的循环语法生成正确的HTML结构,同时整合os.listdir()的内容实现刷新自动更新。

1. 修改Flask后端代码

先在home路由里同时获取机器人列表和目标目录内容,同时优化请求方法(GET请求不适合做数据修改操作):

from flask import *
import Botregistry
import os  # 导入os模块

app = Flask(__name__)

# 定义要监控的目标目录,可根据实际需求修改
TARGET_DIR = "./bot_files"

@app.route('/' )
def home():
    # 获取Botregistry中的机器人列表
    bot_list = Botregistry.listbots()
    # 获取目标目录的实时内容
    dir_contents = os.listdir(TARGET_DIR)
    # 将两个数据传递给模板
    return render_template('home.html', bot_list=bot_list, dir_contents=dir_contents )

# 改用POST请求处理添加机器人的逻辑
@app.route("/add-bot" , methods = ['POST'])
def add_bot():
    name = request.form['nm']
    token = request.form['am']
    Botregistry.addbot(name=name , token=token)
    # 添加完成后重定向回首页,自动刷新显示最新状态
    return redirect(url_for('home'))

# 同理,删除机器人也改用POST请求
@app.route("/delete-bot" , methods = ['POST'])
def delete_bot():
    name = request.form['nmd']
    token = request.form['amd']
    # 假设Botregistry有对应的删除方法,根据实际情况调整
    # Botregistry.delbot(name=name , token=token)
    return redirect(url_for('home'))

app.run(port=80 , debug=True)

2. 修改HTML模板

在botstatus区域用Jinja2循环生成标准HTML列表,同时调整表单的提交方式:

<div class="botstatus">
    <h1>وضعیت ربات ها</h1>
    <h3>لیست ربات ها</h3>
    <ul class="lists">
        {% if bot_list %}
            {% for bot in bot_list %}
                <li>{{ bot }}</li>
            {% endfor %}
        {% else %}
            <li>هیچ رباتی وجود ندارد</li>
        {% endif %}
    </ul>
    <h3>محتویات پوشه</h3>
    <ul class="lists">
        {% if dir_contents %}
            {% for item in dir_contents %}
                <li>{{ item }}</li>
            {% endfor %}
        {% else %}
            <li>پوشه خالی است</li>
        {% endif %}
    </ul>
</div>

同时更新表单的action和method:

<!-- 添加机器人表单 -->
<form action="/add-bot" method="POST">
    <input type="text" placeholder="name" class="nm" name="nm"><br>
    <br>
    <input type="text" placeholder="token" class="am" name="am"><br>
    <br>
    <input type="submit" value="submit">
</form>

<!-- 删除机器人表单 -->
<form action="/delete-bot" method="POST">
    <input type="text" placeholder="name" class="nmd" name="nmd"><br>
    <br>
    <input type="text" placeholder="token" class="amd" name="amd"><br>
    <br>
    <input type="submit" value="submit">
</form>

这样修改后:

  • 机器人列表会渲染成标准HTML无序列表,不再显示Python原生字符串
  • 每次刷新页面都会重新调用os.listdir(),自动更新目录内容
  • 添加/删除机器人后自动重定向回首页,实时展示最新状态

二、无需修改机器人代码的管理工具

如果你想不用修改现有机器人代码就能实现管理,推荐以下工具:

  • BotFather:Telegram官方工具,可直接设置机器人的命令、头像、简介等基础配置,只需提供bot token即可操作。
  • BotPress:开源可视化机器人平台,支持Telegram,通过拖拽界面就能创建对话流程、自动回复,关联bot token后无需编写代码就能扩展功能。
  • ManyChat:主打可视化聊天机器人构建,支持Telegram,适合快速搭建自动回复、菜单、调查问卷等功能,无需改动现有机器人代码。
  • ChatFuel:和ManyChat类似,提供可视化编辑器,能快速搭建智能回复系统,支持Telegram,零代码即可管理机器人。

这些工具都是通过Telegram Bot API实现管理,只要你拥有机器人的token,就能直接操作,完全不需要修改你的Flask项目代码。

内容的提问来源于stack exchange,提问作者Erilia Erish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 13:27:29