如何用Python打造专属Telegram群管机器人?高效过滤群广告全流程
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 社群治理系统就已经成型。