Skip to main content

telegram

Integracao completa com Telegram Bot API. Setup com BotFather, mensagens, webhooks, inline keyboards, grupos, canais. Boilerplates Node.js e Python.

Jump to install

Source facts

Repository
alpertuncortak/crypto-data-pipeline
Last source activity
June 3, 2026 at 12:03
Detected SKILL.md language
Mixed languages
Stars
2
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
20 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
telegram
description
Integracao completa com Telegram Bot API. Setup com BotFather, mensagens, webhooks, inline keyboards, grupos, canais. Boilerplates Node.js e Python.
risk
critical
source
community
date_added
2026-03-06
author
renat
tags
["messaging","telegram","bots","webhooks"]
tools
["claude-code","antigravity","cursor","gemini-cli","codex-cli"]
# Telegram Bot API - Integracao Profissional ## Overview Integracao completa com Telegram Bot API. Setup com BotFather, mensagens, webhooks, inline keyboards, grupos, canais. Boilerplates Node.js e Python. ## When to Use This Skill - When the user mentions "telegram" or related topics - When the user mentions "bot telegram" or related topics - When the user mentions "telegram bot" or related topics - When the user mentions "api telegram" or related topics - When the user mentions "chatbot telegram" or related topics - When the user mentions "mensagem telegram" or related topics ## Do Not Use This Skill When - The task is unrelated to telegram - A simpler, more specific tool can handle the request - The user needs general-purpose assistance without domain expertise ## How It Works Skill para implementar bots profissionais no Telegram usando a Bot API oficial. Suporta Node.js/TypeScript e Python. ### Overview A Telegram Bot API permite criar bots que interagem com usuarios via mensagens, comandos, inline keyboards, pagamentos e muito mais. Bots sao criados pelo @BotFather e autenticados via token unico. **Base URL:** `https://api.telegram.org/bot<TOKEN>/METHOD_NAME` **Metodos HTTP:** GET e POST **Formatos de parametros:** query string, application/x-www-form-urlencoded, application/json, multipart/form-data (uploads) **Limite de arquivos:** 50MB download, 20MB upload (via multipart), 50MB via URL **Portas suportadas para webhooks:** 443, 80, 88, 8443 **Pre-requisitos:** - Conta no Telegram - Bot criado via @BotFather (fornece o token) - Token no formato: `123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11` Se o usuario nao tem um bot criado, oriente a conversar com @BotFather no Telegram e enviar `/newbot`. --- ## Decision Tree ``` O usuario precisa criar um bot? ├── SIM → Secao "Setup com BotFather" abaixo └── NAO → Qual linguagem? ├── Node.js/TypeScript └── Python → O que quer fazer? ├── Enviar mensagens → Secao "Tipos de Mensagem" ├── Receber mensagens → Secao "Receber Updates" ├── Teclados interativos → Secao "Keyboards" ├── Gerenciar grupos/canais → references/chat-management.md ├── Webhook setup → references/webhook-setup.md ├── Inline mode → references/advanced-features.md ├── Pagamentos → references/advanced-features.md ├── Bot de atendimento com IA → Secao "Automacao com IA" └── Referencia completa da API → references/api-reference.md ``` Para iniciar um projeto do zero com boilerplate pronto: ```bash python scripts/setup_project.py --language nodejs --path ./meu-bot-telegram ## Ou python scripts/setup_project.py --language python --path ./meu-bot-telegram ``` Para testar se o token do bot funciona: ```bash python scripts/test_bot.py --token "SEU_TOKEN" ``` Para enviar uma mensagem de teste: ```bash python scripts/send_message.py --token "SEU_TOKEN" --chat-id "CHAT_ID" --text "Hello!" ``` --- ## Setup Com Botfather 1. Abra o Telegram e busque @BotFather 2. Envie `/newbot` 3. Escolha nome de exibicao (ex: "Meu Bot Incrivel") 4. Escolha username (deve terminar com "bot", ex: `meu_incrivel_bot`) 5. BotFather retorna o token - guarde com seguranca 6. Comandos uteis do BotFather: - `/setdescription` - descricao do bot - `/setabouttext` - texto "sobre" do bot - `/setuserpic` - foto de perfil - `/setcommands` - lista de comandos - `/mybots` - gerenciar bots existentes - `/setinline` - habilitar inline mode - `/setprivacy` - modo privacidade em grupos --- ## Variaveis De Ambiente ```env TELEGRAM_BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 ``` ## Node.Js/Typescript ```typescript // Instalar: npm install telegraf dotenv // Para TypeScript: npm install -D typescript import { Telegraf } from 'telegraf'; import dotenv from 'dotenv'; dotenv.config(); const bot = new Telegraf(process.env.TELEGRAM_BOT_TOKEN!); bot.start((ctx) => { ctx.reply('Ola! Eu sou seu bot. Como posso ajudar?'); }); bot.on('text', (ctx) => { if (!ctx.message.text.startsWith('/')) { ctx.reply(`Voce disse: ${ctx.message.text}`); } }); bot.launch(); ``` ## Python ```python ## Instalar: Pip Install Python-Telegram-Bot Python-Dotenv import os from dotenv import load_dotenv from telegram import Update from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes load_dotenv() async def start(update: Update, context: ContextTypes.DEFAULT_TYPE): await update.message.reply_text('Ola! Eu sou seu bot. Como posso ajudar?') async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE): await update.message.reply_text(f'Voce disse: {update.message.text}') app = Application.builder().token(os.getenv('TELEGRAM_BOT_TOKEN')).build() app.add_handler(CommandHandler('start', start)) app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo)) app.run_polling() ``` ## Sem Biblioteca (Http Puro) ```python import requests TOKEN = "SEU_TOKEN" BASE = f"https://api.telegram.org/bot{TOKEN}" ## Verificar Bot r = requests.get(f"{BASE}/getMe") print(r.json()) ## Enviar Mensagem r = requests.post(f"{BASE}/sendMessage", json={ "chat_id": "CHAT_ID", "text": "Hello from pure HTTP!", "parse_mode": "HTML" }) print(r.json()) ``` --- ## Tipos De Mensagem O Telegram suporta diversos tipos de conteudo. Todos os metodos aceitam `chat_id`, `reply_parameters` (para responder), `reply_markup` (para keyboards), `disable_notification` e `protect_content`. ## Html (Recomendado) await bot.send_message( chat_id=chat_id, text="<b>Negrito</b>, <i>italico</i>, <code>codigo</code>, <a href='https://example.com'>link</a>", parse_mode="HTML" ) ## Markdownv2 (Escapar Caracteres Especiais: _ * [ ] ( ) ~ ` > # + - = | { } . !) await bot.send_message( chat_id=chat_id, text="*Negrito*, _italico_, `codigo`, [link](https://example\\.com)", parse_mode="MarkdownV2" ) ``` ## Foto (Por Url, File_Id Ou Upload) await bot.send_photo(chat_id, photo="https://example.com/img.jpg", caption="Legenda aqui") ## Documento await bot.send_document(chat_id, document=open("relatorio.pdf", "rb"), caption="Relatorio mensal") ## Video await bot.send_video(chat_id, video="https://example.com/video.mp4", caption="Assista!") ## Audio await bot.send_audio(chat_id, audio=open("musica.mp3", "rb"), title="Minha Musica") ## Voz (Ogg Com Opus) await bot.send_voice(chat_id, voice=open("audio.ogg", "rb")) ## Localizacao await bot.send_location(chat_id, latitude=-23.5505, longitude=-46.6333) ## Contato await bot.send_contact(chat_id, phone_number="+5511999999999", first_name="Joao") ## Enquete await bot.send_poll( chat_id, question="Qual sua cor favorita?", options=["Azul", "Verde", "Vermelho"], is_anonymous=False ) ## Grupo De Midias await bot.send_media_group(chat_id, media=[ InputMediaPhoto("url1", caption="Foto 1"), InputMediaPhoto("url2"), InputMediaVideo("url3") ]) ## Acao De Chat (Typing, Upload_Photo, Etc.) await bot.send_chat_action(chat_id, action="typing") ``` ## Node.Js Equivalente ```typescript // Foto bot.sendPhoto(chatId, 'https://example.com/img.jpg', { caption: 'Legenda' }); // Documento bot.sendDocument(chatId, fs.createReadStream('relatorio.pdf'), { caption: 'Relatorio' }); // Localizacao bot.sendLocation(chatId, -23.5505, -46.6333); // Enquete bot.sendPoll(chatId, 'Qual sua cor favorita?', ['Azul', 'Verde', 'Vermelho']); ``` --- ## Inline Keyboard (Botoes Dentro Da Mensagem) ```python from telegram import InlineKeyboardButton, InlineKeyboardMarkup keyboard = InlineKeyboardMarkup([ [InlineKeyboardButton("Opcao A", callback_data="opt_a"), InlineKeyboardButton("Opcao B", callback_data="opt_b")], [InlineKeyboardButton("Abrir Site", url="https://example.com")], [InlineKeyboardButton("Compartilhar", switch_inline_query="texto")] ]) await bot.send_message(chat_id, "Escolha uma opcao:", reply_markup=keyboard) ## Handler De Callback async def button_callback(update: Update, context: ContextTypes.DEFAULT_TYPE): query = update.callback_query await query.answer() # Importante: sempre responder o callback await query.edit_message_text(f"Voce escolheu: {query.data}") app.add_handler(CallbackQueryHandler(button_callback)) ``` ## Reply Keyboard (Teclado Customizado) ```python from telegram import ReplyKeyboardMarkup, KeyboardButton keyboard = ReplyKeyboardMarkup( [[KeyboardButton("Enviar Localizacao", request_location=True)], [KeyboardButton("Enviar Contato", request_contact=True)], ["Opcao 1", "Opcao 2"]], resize_keyboard=True, one_time_keyboard=True ) await bot.send_message(chat_id, "Escolha:", reply_markup=keyboard) ``` ## Remover Teclado ```python from telegram import ReplyKeyboardRemove await bot.send_message(chat_id, "Teclado removido", reply_markup=ReplyKeyboardRemove()) ``` --- ## Receber Updates Existem duas formas de receber updates: **Long Polling** e **Webhooks**. ## Long Polling (Desenvolvimento) Mais simples, ideal para desenvolvimento. O bot faz requisicoes periodicas ao servidor do Telegram. ```python ## Python-Telegram-Bot Ja Faz Isso Automaticamente app.run_polling(allowed_updates=Update.ALL_TYPES) ``` ```typescript // Telegraf com polling const bot = new Telegraf(token); bot.launch(); ``` ## Webhooks (Producao) Para producao, webhooks sao mais eficientes. O Telegram envia updates via POST para sua URL HTTPS. Leia `references/webhook-setup.md` para configuracao completa com Express, Flask, ngrok e deploy. Setup rapido: ```python ## Flask Webhook from flask import Flask, request import requests app = Flask(__name__) TOKEN = "SEU_TOKEN" BASE = f"https://api.telegram.org/bot{TOKEN}" @app.route(f"/webhook/{TOKEN}", methods=["POST"]) def webhook(): update = request.get_json() if "message" in update and "text" in update["message"]: chat_id = update["message"]["chat"]["id"] text = update["message"]["text"] requests.post(f"{BASE}/sendMessage", json={ "chat_id": chat_id, "text": f"Recebi: {text}" }) return "OK", 200 ## Registrar Webhook requests.post(f"{BASE}/setWebhook", json={ "url": "https://seu-dominio.com/webhook/" + TOKEN, "allowed_updates": ["message", "callback_query"], "secret_token": "seu_secret_seguro_aqui" }) ``` --- ## Comandos Do Bot Registre comandos para aparecerem no menu do Telegram: ```python from telegram import BotCommand await bot.set_my_commands([ BotCommand("start", "Iniciar o bot"), BotCommand("help", "Ver comandos disponiveis"), BotCommand("settings", "Configuracoes"), BotCommand("status", "Ver status do servico"), ]) ``` Via HTTP: ```bash curl -X POST "https://api.telegram.org/bot$TOKEN/setMyCommands" \ -H "Content-Type: application/json" \
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub