Telegram Bot
Build Telegram bots for chatbots, notifications, AI assistants, and group automation. Based on n8n's Telegram workflow templates.
Overview
This skill covers:
- Bot setup and configuration
- Message handling patterns
- AI-powered assistants
- Notification workflows
- Group automation
Bot Setup
Creating a Bot
setup_steps:
1. create_bot:
- open: @BotFather on Telegram
- command: /newbot
- provide: bot_name
- provide: bot_username (must end in 'bot')
- receive: API_token
2. configure_bot:
- command: /setdescription
- command: /setabouttext
- command: /setuserpic
- command: /setcommands
3. get_chat_id:
- start: conversation with bot
- call: https://api.telegram.org/bot{TOKEN}/getUpdates
- extract: chat.id from response
Bot Commands
commands:
- command: /start
description: "Start the bot"
- command: /help
description: "Show available commands"
- command: /status
description: "Check system status"
- command: /subscribe
description: "Subscribe to notifications"
- command: /unsubscribe
description: "Unsubscribe from notifications"
Message Handlers
Basic Message Handler
workflow: "Telegram Message Handler"
trigger: telegram_message
handlers:
text_message:
action: |
1. Parse message text
2. Determine intent
3. Process request
4. Send response
command:
pattern: "^/"
action: route_to_command_handler
photo:
action: |
1. Download photo
2. Process with vision AI
3. Respond with analysis
document:
action: |
1. Download document
2. Extract content
3. Process and respond
voice:
action: |
1. Download audio
2. Transcribe with Whisper
3. Process text
4. Respond (text or voice)
location:
action: |
1. Extract coordinates
2. Lookup local info
3. Respond with relevant data
n8n Workflow
workflow: "Telegram Bot n8n"
nodes:
- name: "Telegram Trigger"
type: "n8n-nodes-base.telegramTrigger"
parameters:
updates: ["message", "callback_query"]
- name: "Route Message Type"
type: "n8n-nodes-base.switch"
parameters:
rules:
- output: 0
condition: "{{ $json.message.text.startsWith('/') }}"
- output: 1
condition: "{{ $json.message.photo }}"
- output: 2
condition: "{{ $json.message.voice }}"
- output: 3
fallback: true
- name: "Process with AI"
type: "n8n-nodes-base.openAi"
parameters:
model: "gpt-4"
messages:
- role: "system"
content: "You are a helpful Telegram assistant."
- role: "user"
content: "{{ $json.message.text }}"
- name: "Send Response"
type: "n8n-nodes-base.telegram"
parameters:
chatId: "{{ $json.message.chat.id }}"
text: "{{ $json.response }}"
AI-Powered Bot
GPT-4 Integration
ai_bot:
name: "AI Assistant Bot"
system_prompt: |
You are a helpful AI assistant on Telegram.
Guidelines:
- Be concise (Telegram has message limits)
- Use emojis appropriately
- Format with markdown when helpful
- Ask clarifying questions if needed
features:
- conversational_memory: true
- context_window: last_10_messages
- tools: [web_search, calculator, weather]
message_formatting:
max_length: 4096
split_long_messages: true
use_markdown: true
Multi-Modal Bot
multimodal_bot:
handlers:
text:
model: gpt-4
action: chat_completion
image:
model: gpt-4-vision
action: analyze_and_respond
voice:
transcribe: whisper
process: gpt-4
respond: text_or_voice
document:
extract: based_on_type
summarize: gpt-4
respond: text
Notification System
Alert Bot
workflow: "System Alert Bot"
triggers:
- source: monitoring_system
event: alert
- source: ci_cd
event: build_status
- source: ecommerce
event: new_order
notification_templates:
alert:
format: |
🚨 *Alert: {severity}*
*Service:* {service}
*Message:* {message}
*Time:* {timestamp}
[View Dashboard]({dashboard_link})
build:
format: |
{status_emoji} *Build {status}*
*Project:* {project}
*Branch:* {branch}
*Commit:* `{commit_short}`
{details}
order:
format: |
🛒 *New Order!*
*Order:* #{order_id}
*Customer:* {customer}
*Total:* ${total}
*Items:* {item_count}
routing:
by_severity:
critical: [admin_group, on_call_user]
warning: [team_group]
info: [logging_channel]
Scheduled Notifications
scheduled_notifications:
daily_digest:
schedule: "9am daily"
template: |
📊 *Daily Summary - {date}*
📈 Sales: ${sales} ({change})
👥 New users: {new_users}
🎫 Open tickets: {tickets}
Have a great day! ☀️
weekly_report:
schedule: "Monday 9am"
template: weekly_metrics_report
reminder:
trigger: custom_event
template: |
⏰ *Reminder*
{reminder_text}
Scheduled by: {creator}
Group Automation
Welcome Bot
group_bot:
on_member_join:
action: |
1. Check if new member
2. Send welcome message
3. Share rules
4. Suggest introduction
template: |
👋 Welcome to {group_name}, {user_name}!
Please:
1. Read the /rules
2. Introduce yourself
3. Ask questions anytime!
Enjoy your stay! 🎉
on_member_leave:
action: optional_goodbye
moderation:
- spam_detection: auto_delete + warn
- link_filtering: whitelist_only
- flood_control: rate_limit
Poll & Survey Bot
poll_bot:
commands:
/poll:
format: "/poll Question | Option1 | Option2 | ..."
action: create_poll
/survey:
action: start_multi_question_survey
/results:
action: show_aggregated_results
features:
- anonymous_voting: optional
- multiple_choice: optional
- scheduled_close: optional
- export_results: to_sheets
Inline Features
Inline Keyboard
inline_keyboard:
example:
text: "Choose an option:"
keyboard:
- row:
- text: "Option 1"
callback_data: "opt_1"
- text: "Option 2"
callback_data: "opt_2"
- row:
- text: "Cancel"
callback_data: "cancel"
callback_handler:
opt_1:
action: process_option_1
response: "You selected Option 1"
opt_2:
action: process_option_2
response: "You selected Option 2"
cancel:
action: cancel_operation
response: "Operation cancelled"
Inline Query
inline_mode:
trigger: "@botname query"
results:
- type: article
title: "{query} result"
description: "Click to send"
message_text: "Result for: {query}"
- type: photo
photo_url: "{search_result_image}"
- type: gif
gif_url: "{gif_url}"
Output Example
Request: "Create a Telegram notification bot for server alerts"
Output:
# Server Alert Telegram Bot
## Setup
1. Create bot with @BotFather
2. Get token: `123456:ABC-DEF...`
3. Get chat ID for alerts channel
## n8n Workflow
```yaml
nodes:
1. Webhook (receives alerts)
2. Format Message
3. Telegram Send
Alert Templates
Critical Alert:
🚨 CRITICAL ALERT
Server: production-web-01
Status: DOWN
Time: 2026-01-30 14:32:05 UTC
Details:
- CPU: 98%
- Memory: 95%
- Disk: 89%
[View Grafana] [Acknowledge]
Recovery:
✅ RECOVERED
Server: production-web-01
Downtime: 5 minutes
Status: All systems normal
Incident resolved automatically.
Implementation
// Send alert function
async function sendAlert(severity, message, details) {
const emoji = {
critical: '🚨',
warning: '⚠️',
info: 'ℹ️',
success: '✅'
};
const text = `${emoji[severity]} *${severity.toUpperCase()}*\n\n${message}\n\n${details}`;
await telegram.sendMessage({
chat_id: ALERT_CHANNEL_ID,
text: text,
parse_mode: 'Markdown'
});
}
Features
- Severity-based routing
- Inline action buttons
- Acknowledgment tracking
- Escalation rules
---
*Telegram Bot Skill - Part of Claude Office Skills*