← 返回列表

如何用Python打造专属Telegram群管机器人?高效过滤群广告全流程

分类:Telegram频道发布于:2026-08-05

Telegram 群组一旦人数变多,最让管理员头疼的往往不是日常聊天,而是广告刷屏、垃圾链接、违规拉人、重复消息

如果完全依靠人工盯群,不仅效率低,还容易错过深夜或高峰期的垃圾信息,因此用 Python 打造一个专属 Telegram 群管机器人,是很多技术型群主的刚需。

本文将从实战角度出发,带你完成一个可运行、可扩展的 Telegram 群管机器人,用于识别广告关键词、删除违规消息、禁言用户、记录日志

整套流程适合有基础 Python 经验的读者,也适合正在运营技术群、资源群、社群频道的管理员参考。

🤖 一、为什么推荐用 Python 做 Telegram 群管机器人?

Python 的优势在于生态成熟、代码简洁、维护成本低,尤其适合快速开发 Telegram Bot 这类自动化工具。

借助 python-telegram-bot 这样的成熟库,我们可以很快接入 Telegram Bot API,实现消息监听、用户管理和规则过滤。

相比购买现成群管机器人,自建机器人最大的优势是规则完全可控,你可以根据自己的群主题设置更精准的广告识别逻辑。

例如金融群可以重点过滤“高收益”“代投”“套利”,技术群可以过滤“引流”“接单群”“项目盘”等关键词。

适合使用自建群管机器人的场景

如果你的群组经常出现陌生人发链接、机器人进群刷广告、用户反复发送相同内容,那么自建机器人会非常有价值。

它不仅能提升群质量,还能减少管理员的重复劳动,让社群保持更健康的讨论氛围。

🧩 二、准备工作:创建 Telegram Bot 并获取 Token

开发 Telegram 机器人之前,你需要先通过官方 BotFather 创建一个 Bot,并拿到用于调用 API 的 Token。

打开 Telegram,搜索 @BotFather,发送以下命令开始创建机器人。

/newbot

接着按照提示输入机器人名称和用户名,用户名必须以 bot 结尾,例如 MyGroupGuardBot。

创建完成后,BotFather 会返回一串 Token,它大致长这样:

1234567890:AAExample_Token_xxxxxxxxxxxxxxxxx

请务必妥善保管 Token,不要公开到 GitHub、论坛或群聊中,因为任何拿到 Token 的人都可能控制你的机器人。

随后将机器人拉入你的 Telegram 群,并在群管理设置中授予删除消息、封禁用户、管理消息等权限。

⚙️ 三、安装 Python 依赖与基础项目结构

建议使用 Python 3.10 或更高版本,这样可以获得更好的异步支持和依赖兼容性。

首先在本地创建项目目录,并安装 Telegram Bot SDK。

mkdir telegram-group-guard
cd telegram-group-guard
python -m venv venv
source venv/bin/activate
pip install python-telegram-bot==21.6

Windows 用户可以使用 venv\Scripts\activate 激活虚拟环境。

为了便于维护,推荐使用以下项目结构,让配置、规则和主程序相互分离。

telegram-group-guard/
├── bot.py
├── config.py
├── rules.py
└── logs.txt

其中 bot.py 负责主逻辑,config.py 存放 Token,rules.py 存放广告关键词和正则规则。

这种拆分方式后期扩展更方便,也更符合真实项目中的工程化习惯。

电报精准找群黑科技提示:

由于 Telegram 官方搜索对中文支持极差,很多优质的推广、技术和资源群组隐藏极深。如果你正在寻找相关的活跃社群,强烈推荐使用本站首页的 【TTSO - Telegram 智能搜索 Bot】。作为目前最好用的电报综合搜索导航,只需输入关键词,即可秒级触达数十万个精选 TG 中文群组、资源频道。一键直达,帮你节省 90% 的找群时间!

🛡️ 四、编写广告过滤规则:关键词、链接与重复内容

群广告并不只有一种形式,常见类型包括关键词推广、短链接跳转、邀请链接、联系方式引流和重复刷屏。

因此规则设计不能只靠一个黑名单,而应该组合使用关键词匹配、正则识别、频率检测

创建 rules.py

下面是一个基础规则文件,你可以根据自己的群主题继续增加关键词。

import re

AD_KEYWORDS = [
    "稳赚", "高收益", "代投", "空投", "返佣",
    "拉人", "引流", "接广告", "包赔", "灰产",
    "私聊我", "加我", "项目群", "推广合作"
]

LINK_PATTERNS = [
    re.compile(r"https?://", re.IGNORECASE),
    re.compile(r"t\.me/", re.IGNORECASE),
    re.compile(r"telegram\.me/", re.IGNORECASE),
    re.compile(r"@[a-zA-Z0-9_]{5,}")
]

def is_ad_message(text: str) -> bool:
    if not text:
        return False

    lower_text = text.lower()

    for keyword in AD_KEYWORDS:
        if keyword in lower_text:
            return True

    for pattern in LINK_PATTERNS:
        if pattern.search(text):
            return True

    return False

这段代码会检查消息中是否包含广告关键词、网址、Telegram 邀请链接或用户名联系方式。

实际运营中建议不要一次性把规则设得过严,否则容易误删正常用户分享的技术资料。

🚀 五、核心代码:自动删除广告并警告用户

接下来编写 bot.py,让机器人监听群消息,一旦识别为广告,就自动删除并发送提醒。

在生产环境中,你还可以加入数据库记录违规次数,实现多次违规自动禁言。

import logging
from datetime import datetime
from telegram import Update
from telegram.ext import ApplicationBuilder, MessageHandler, ContextTypes, filters
from rules import is_ad_message

BOT_TOKEN = "请替换为你的 BotFather Token"

logging.basicConfig(
    filename="logs.txt",
    level=logging.INFO,
    format="%(asctime)s - %(message)s"
)

async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
    message = update.effective_message
    user = update.effective_user
    chat = update.effective_chat

    if not message or not message.text:
        return

    text = message.text

    if is_ad_message(text):
        try:
            await message.delete()

            warning = (
                f"⚠️ 用户 {user.mention_html()} 的消息疑似广告,"
                f"已被自动删除。请遵守群规。"
            )

            await context.bot.send_message(
                chat_id=chat.id,
                text=warning,
                parse_mode="HTML"
            )

            logging.info(
                f"Deleted ad message | user_id={user.id} | "
                f"username={user.username} | text={text}"
            )

        except Exception as e:
            logging.error(f"Failed to delete message: {e}")

def main():
    app = ApplicationBuilder().token(BOT_TOKEN).build()

    app.add_handler(
        MessageHandler(filters.TEXT & filters.ChatType.GROUPS, handle_message)
    )

    print("Telegram 群管机器人已启动...")
    app.run_polling()

if __name__ == "__main__":
    main()

运行程序后,机器人会持续监听群消息,并对命中规则的内容进行处理。

如果发现机器人无法删除消息,通常是因为它没有被设置为管理员,或缺少删除消息权限

🔒 六、进阶优化:禁言、白名单与误杀保护

一个高质量的群管机器人不能只会删除消息,还要能区分普通用户、管理员、白名单成员和高风险账号。

为了降低误伤率,建议加入白名单机制,对可信用户或管理员跳过广告检测。

白名单示例

WHITE_LIST_USER_IDS = [12345678, 87654321]

def is_white_user(user_id: int) -> bool:
    return user_id in WHITE_LIST_USER_IDS

如果你运营的是公开大群,还可以设置“新用户前 10 分钟禁止发链接”的规则。

这类策略对防止广告机器人进群秒发链接非常有效,但需要保存用户入群时间,建议配合 SQLite 或 Redis 使用。

禁言用户思路

当某个用户多次发送广告内容时,可以调用 restrict_chat_member 接口限制其发言权限。

一般建议先警告,再短期禁言,最后才是永久封禁,这样更符合社区治理的公平原则。

from datetime import timedelta
from telegram import ChatPermissions

await context.bot.restrict_chat_member(
    chat_id=chat.id,
    user_id=user.id,
    permissions=ChatPermissions(can_send_messages=False),
    until_date=datetime.now() + timedelta(minutes=30)
)

注意,禁言功能必须要求机器人拥有管理用户权限,否则 API 调用会失败。

同时,建议在日志中记录禁言原因,方便管理员事后复盘和人工申诉处理。

📈 七、部署上线:让机器人 24 小时稳定运行

本地运行适合测试,但真正用于群管理时,建议部署到 VPS、云服务器或容器平台。

最简单的方式是使用 Linux 服务器配合 systemd,让机器人异常退出后自动重启。

[Unit]
Description=Telegram Group Guard Bot
After=network.target

[Service]
WorkingDirectory=/opt/telegram-group-guard
ExecStart=/opt/telegram-group-guard/venv/bin/python bot.py
Restart=always
RestartSec=5
User=root

[Install]
WantedBy=multi-user.target

保存为 telegram-guard.service 后,将其放入 /etc/systemd/system/ 目录,再执行启动命令。

systemctl daemon-reload
systemctl enable telegram-guard
systemctl start telegram-guard
systemctl status telegram-guard

如果你不想维护服务器,也可以使用 Docker、Railway、Render 等平台部署,但要注意免费平台可能存在休眠限制。

对于大型群组,建议使用稳定 VPS,并定期备份规则文件和日志数据。

✅ 八、实战建议:不要只追求“删得快”,更要追求“管得准”

很多新手做群管机器人时,会把关键词列表做得非常激进,结果正常用户发教程链接也被误删。

真正好用的群管系统应该做到低误杀、高命中、可追溯、可人工干预

建议你先从温和规则开始,观察日志一到两周,再逐步收紧链接、关键词和新用户限制。

如果群组规模较大,还可以增加管理员命令,例如 /ban、/mute、/allowlink,让人工管理与自动化协同工作。

❓ 常见问题解答(FAQ)

1. Telegram 群管机器人必须使用服务器吗?

测试阶段可以在本地电脑运行,但只要电脑关机或断网,机器人就会停止工作。

如果你希望机器人 24 小时管理群组,建议部署到 VPS 或云服务器。

2. 机器人为什么无法删除广告消息?

最常见原因是机器人没有被设为群管理员,或者管理员权限中没有开启删除消息权限。

请进入群组管理后台,确认 Bot 拥有删除消息、管理用户等必要权限。

3. 关键词过滤会不会误删正常消息?

会有可能,所以不建议只依赖关键词,而是结合链接规则、用户行为、发言频率和白名单一起判断。

最佳做法是保留日志,定期复盘误删内容,再持续优化规则。

4. 可以让机器人自动封禁广告账号吗?

可以,但建议谨慎使用永久封禁,尤其是在中文群组中,误判成本较高。

更稳妥的策略是第一次删除并警告,第二次短期禁言,多次违规后再封禁。

5. 自建机器人和现成群管机器人哪个更好?

现成机器人上手快,适合轻量群组;自建机器人灵活度高,更适合有特殊规则、隐私要求或大规模运营需求的社群。

如果你有 Python 基础,自建 Telegram 群管机器人会更可控,也更容易长期迭代。

总体来说,用 Python 打造专属 Telegram 群管机器人并不复杂,关键在于规则设计、权限配置和稳定部署。

当你完成广告过滤、自动删除、禁言和日志追踪后,一个真正高效的 Telegram 社群治理系统就已经成型。

Telegram搜索入口客服ID@TTSO联系