Jun 15, 2026
How to Build a Telegram Video Transcriber & Subtitle Generator Bot in 2026
Learn how to build and deploy a self-hosted Telegram Video Transcriber & Subtitle Generator Bot …
In 2026, managing a growing online community has become a major challenge for developers and digital creators. The rapid rise of automated spam bots, marketing raids, and AI-generated text spam has made traditional moderation tools practically obsolete. Classic blacklists and regex patterns fail to detect context, allowing sophisticated promotions, cryptocurrency scams, and toxic messages to slip through while often flagging authentic human users.
python-telegram-bot and openai SDKs, and build an asynchronous message handler. This handler intercepts group messages, evaluates them using OpenAI's GPT-4o-mini endpoint for spam and toxicity probabilities, and deletes violations or bans persistent offenders automatically.
To combat modern threats, communities are deploying AI Guardians—advanced moderation bots equipped with large language models (LLMs) that read, understand, and filter group activities in real-time. By analyzing user intent, sentiment, and toxicity levels, these bots act as round-the-clock administrators, keeping chats clean, productive, and compliant.
In this comprehensive guide, we will walk you through building and deploying a self-hosted Telegram AI Guardian moderation bot using Python and the OpenAI API. We will implement robust spam protection, semantic moderation, and automatic user restriction capabilities.
Before writing the codebase, let us review the system requirements and development dependencies necessary to deploy our AI Guardian bot:
asyncio.For more general technical tutorials or resources, you can check out our curated directory of Science & Technology Telegram Channels or view active coding hubs in the Gaming & Apps Category.
To start, you need to register a new bot on the Telegram platform and obtain a secure API token:
/newbot.AIGuardianModBot)./setprivacy to @BotFather, select your bot, and set it to Disabled. This allows the bot to scan all incoming messages in group chats where it has been added as an administrator.Create a dedicated directory on your development machine or VPS, configure a Python virtual environment, and install the necessary libraries:
# Create project directory
mkdir ai-guardian-bot
cd ai-guardian-bot
# Set up Python virtual environment
python -m venv venv
# Activate virtual environment
# On Windows:
.\venv\Scripts\activate
# On Linux/macOS:
source venv/bin/activate
# Install python-telegram-bot and openai dependencies
pip install python-telegram-bot openai python-dotenv
Create a file named guardian.py in your project directory. This code sets up the asynchronous bot client, registers update handlers, and runs the polling loop. We will write highly modular code designed to handle background checks without freezing the main bot execution:
import os
import json
import logging
from dotenv import load_dotenv
from telegram import Update
from telegram.ext import (
ApplicationBuilder,
CommandHandler,
MessageHandler,
filters,
ContextTypes
)
from openai import OpenAI
# Load environment variables
load_dotenv()
# Configure logger
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO
)
logger = logging.getLogger(__name__)
# Validate environment variables
BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN")
OPENAI_KEY = os.getenv("OPENAI_API_KEY")
if not BOT_TOKEN or not OPENAI_KEY:
logger.critical("Error: TELEGRAM_BOT_TOKEN or OPENAI_API_KEY environment variable is missing.")
exit(1)
# Initialize OpenAI Client
openai_client = OpenAI(api_key=OPENAI_KEY)
# Define safety thresholds (0.0 to 1.0)
SPAM_THRESHOLD = 0.85
TOXICITY_THRESHOLD = 0.70
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
"""Respond to the /start command."""
await update.message.reply_text(
"🛡️ AI Guardian Bot Activated.\n"
"I am actively monitoring this group. Spam, promotional links, "
"and toxic behavior will be analyzed and moderated automatically."
)
async def check_message_content(text: str) -> tuple[float, float, str]:
"""
Use GPT-4o-mini to analyze message safety.
Returns: (spam_score, toxicity_score, reasoning)
"""
try:
# Prompt GPT to evaluate the message context and return JSON
response = openai_client.chat.completions.create(
model="gpt-4o-mini",
response_format={"type": "json_object"},
messages=[
{
"role": "system",
"content": (
"You are an AI Guardian moderation engine. Analyze the provided message "
"for spam (promotional links, referral codes, crypto scams, unwanted advertisements) "
"and toxicity (harassment, insults, hate speech, extreme anger). "
"Return a JSON object containing precisely: "
'{"spam_score": float (0.0 to 1.0), "toxicity_score": float (0.0 to 1.0), "reason": "short explanation"}'
)
},
{"role": "user", "content": text}
],
temperature=0.0
)
data = json.loads(response.choices[0].message.content)
return (
float(data.get("spam_score", 0.0)),
float(data.get("toxicity_score", 0.0)),
data.get("reason", "No reason provided")
)
except Exception as e:
logger.error(f"Failed to analyze message: {e}")
return 0.0, 0.0, f"Analysis Error: {str(e)}"
async def monitor_chat(update: Update, context: ContextTypes.DEFAULT_TYPE):
"""Intercept and evaluate every text message in the chat."""
if not update.message or not update.message.text:
return
text = update.message.text
user = update.message.from_user
chat_id = update.message.chat_id
message_id = update.message.message_id
# Ignore actions from administrators
member_status = await context.bot.get_chat_member(chat_id, user.id)
if member_status.status in ["administrator", "creator"]:
return
# Call AI classification
spam_score, toxicity_score, reason = await check_message_content(text)
logger.info(f"Scan result from @{user.username or user.first_name}: Spam={spam_score:.2f}, Toxicity={toxicity_score:.2f}")
# Determine if actions are required
trigger_action = False
action_reason = ""
if spam_score >= SPAM_THRESHOLD:
trigger_action = True
action_reason = f"Spam detected ({reason})"
elif toxicity_score >= TOXICITY_THRESHOLD:
trigger_action = True
action_reason = f"Toxic behavior detected ({reason})"
if trigger_action:
try:
# Delete message
await context.bot.delete_message(chat_id=chat_id, message_id=message_id)
# Send warning to user
warning_msg = (
f"🛡️ AI Guardian Action: Removed message from @{user.username or user.first_name}.\n"
f"⚠️ Reason: {action_reason}.\n"
f"Keep the group clean and respect all participants."
)
await context.bot.send_message(chat_id=chat_id, text=warning_msg, parse_mode="HTML")
# Auto-ban for severe violations (extreme score >= 0.95)
if spam_score >= 0.95 or toxicity_score >= 0.90:
await context.bot.ban_chat_member(chat_id=chat_id, user_id=user.id)
ban_msg = f"🚫 User @{user.username or user.first_name} has been banned for severe rule violations."
await context.bot.send_message(chat_id=chat_id, text=ban_msg)
except Exception as e:
logger.error(f"Moderation execution error: {e}")
def main():
"""Start the Telegram Bot Application."""
app = ApplicationBuilder().token(BOT_TOKEN).build()
# Commands
app.add_handler(CommandHandler("start", start))
# Message monitor (scans all non-command text messages in the group)
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, monitor_chat))
logger.info("AI Guardian Bot is starting...")
app.run_polling()
if __name__ == "__main__":
main()
Create a file named .env in your project folder to store your secrets safely. This isolates sensitive variables from your executable script:
TELEGRAM_BOT_TOKEN=YOUR_BOT_TOKEN_FROM_BOTFATHER
OPENAI_API_KEY=YOUR_OPENAI_API_KEY
To ensure your AI Guardian runs continuously, restarts automatically if the server crashes, and boots on system startup, configure it as a Linux systemd background service:
/etc/systemd/system/ai-guardian.service:[Unit]
Description=Telegram AI Guardian Moderation Bot
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/root/ai-guardian-bot
ExecStart=/root/ai-guardian-bot/venv/bin/python guardian.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
# Reload systemd configuration
sudo systemctl daemon-reload
# Enable the service to launch on boot
sudo systemctl enable ai-guardian.service
# Start the service immediately
sudo systemctl start ai-guardian.service
# Check service status
sudo systemctl status ai-guardian.service
No. By default, Telegram's Privacy Mode prevents bots from reading regular group messages. Because the bot needs to analyze user text for toxicity and spam, privacy mode must be disabled via @BotFather -> Bot Settings -> Group Privacy -> Disable. Note that the bot will still ignore messages sent by other administrators or developers.
By leveraging the lightweight gpt-4o-mini model, API request costs are kept exceptionally low. At current rates, processing 10,000 group messages costs less than $0.15. Additionally, you can implement a local classifier or use open-source engines like Ollama with Llama-3 to run the entire semantic filtering stack locally on your own GPU/VPS without external API fees.
Keyword filters are easily bypassed by replacing characters (e.g., swapping 's' with '$' or 'a' with '@'). AI models perform semantic analysis, which evaluates the contextual meaning of a message. A user attempting to promote a scam in a polite, structured format will still trigger a high spam probability score and be blocked immediately.
Interested in joining active discussions about technology, automation, or blockchain? Review some of the most popular verified communities indexed in our public directory:
For additional groups, you can browse listings focused on Crypto & Bitcoin Channels or find career opportunities inside the Jobs & Career Listings.
Deploying an AI Guardian is the most effective way to protect your Telegram group from automated abuse, spam campaigns, and disruptive behavior in 2026. By offloading content moderation to a lightweight GPT classification engine, you ensure a safe and welcoming space for authentic user interaction. Start running the codebase on your local VPS and monitor logs to fine-tune your toxicity and spam threshold bounds!
Stay updated with the latest Telegram groups and channels
Or scan the QR code
Loading community stats...
No active reviews. Be the first to add one!