Formulário de contato

Nome

E-mail *

Mensagem *

Imagem

Automação Python: Monitore Promos no Telegram e Use Automaticamente

Automação Python: Monitore Promos no Telegram e Use Automaticamente

Publicado por em


@CanalQb no YouTube


@CanalQb

Bot Python: Monitore Promos no Telegram e Aplique Automaticamente


ℹ️ Nota Técnica: Este script é fornecido para fins estritamente educacionais. Antes de automatizar qualquer interação com um serviço externo, leia os Termos de Uso desse serviço. O autor não se responsabiliza por banimentos ou consequências decorrentes do uso indevido.

Você já perdeu um código promocional porque viu a mensagem tarde demais? Isso acontece o tempo todo em canais de Telegram com promoções relâmpago. A solução é simples: um bot em Python que fica de olho no canal por você e, assim que um código aparecer, aplica automaticamente no site. Aqui no @CanalQb, montamos e testamos essa solução do zero, usando Telethon + Selenium com Python 3.8.10.

O que você vai aprender

  1. Como o bot funciona na prática
  2. Pré-requisitos e instalação
  3. Credenciais seguras com dotenv
  4. Script completo e comentado
  5. Riscos e boas práticas

Como o bot de monitoramento de promos funciona?

O bot combina duas bibliotecas: Telethon (para se conectar à API oficial do Telegram) e Selenium (para controlar o navegador). O fluxo é linear e direto: ele faz login no site-alvo, conecta ao Telegram e fica em loop lendo a última mensagem do canal. Quando detecta o padrão de texto de um código promocional — via expressão regular — extrai o código e o insere no campo do site, acionando o botão de confirmação. Sem interação humana necessária após o setup.

Fluxo resumido

1
Carrega credenciais do arquivo .env (seguro, nunca em texto puro).
2
Selenium abre o navegador, navega até o login e preenche email + senha automaticamente.
3
Telethon conecta ao Telegram com sua conta, usando a API oficial (api_id + api_hash).
4
Loop de monitoramento: verifica a última mensagem. Se for nova e contiver código promo, aplica no site.

Quais são os pré-requisitos para rodar o bot?

Você precisa de Python 3.8.10 instalado, Chrome + ChromeDriver compatíveis, e uma conta no my.telegram.org para gerar suas credenciais de API. O ChromeDriver deve estar na mesma versão do seu Chrome — um erro aqui é a causa número 1 de falhas em projetos Selenium no Windows.

Instale as dependências com um único comando:

# Instalar dependências (Python 3.8.10) pip install telethon selenium python-dotenv

⚠️ ChromeDriver: Acesse chromedriver.chromium.org e baixe a versão exata do seu Chrome. Coloque o executável na mesma pasta do script ou adicione ao PATH do sistema.


Como armazenar credenciais com segurança no Python?

Guardar senhas em arquivos .txt avulsos é uma prática arriscada — qualquer pessoa com acesso à pasta vê tudo. A forma correta, validada aqui nos testes do canalqb.com.br, é usar o python-dotenv com um arquivo .env que fica fora do repositório Git. Isso evita exposição acidental em commits e é a abordagem padrão em projetos profissionais.

Crie um arquivo chamado .env na raiz do projeto:

# .env — NUNCA suba esse arquivo para o GitHub! API_ID=12345678 API_HASH=sua_hash_aqui LOGIN_EMAIL=seu@email.com LOGIN_SENHA=suaSenha123 PHONE_NUMBER=+5511999990000 TARGET_CHANNEL=https://t.me/seucanal TARGET_SITE_LOGIN=https://seusite.com/login TARGET_SITE_PROFILE=https://seusite.com/perfil

E adicione ao .gitignore:

.env session_name.session

ℹ️ Insight @CanalQb: O arquivo .session gerado pelo Telethon equivale a um token de acesso permanente à sua conta Telegram. Trate-o como senha — nunca compartilhe e adicione ao .gitignore imediatamente.


Script completo: bot Telegram + Selenium em Python 3.8

O script abaixo é uma versão refatorada e melhorada. As principais mudanças em relação à versão original: credenciais via .env, logging estruturado no lugar de print() solto, tratamento de exceções granular por bloco, reconexão automática ao Telegram com back-off exponencial, e remoção total do loop de tentativas aleatórias — que além de inútil, é eticamente problemático e pode resultar em banimento de conta.

# bot_promo.py — @CanalQb | python-dotenv + Telethon + Selenium # Compatível com Python 3.8.10 import re import time import logging from dotenv import load_dotenv import os from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import NoSuchElementException, TimeoutException from telethon import functions from telethon.sync import TelegramClient # ── Configuração de log ────────────────────────────────────── logging.basicConfig( level=logging.INFO, format='%(asctime)s [%(levelname)s] %(message)s', handlers=[ logging.FileHandler('bot_promo.log', encoding='utf-8'), logging.StreamHandler() ] ) log = logging.getLogger('bot_promo') # ── Carrega variáveis de ambiente ──────────────────────────── load_dotenv() API_ID = os.getenv('API_ID') API_HASH = os.getenv('API_HASH') LOGIN_EMAIL = os.getenv('LOGIN_EMAIL') LOGIN_SENHA = os.getenv('LOGIN_SENHA') PHONE_NUMBER = os.getenv('PHONE_NUMBER') TARGET_CHANNEL = os.getenv('TARGET_CHANNEL') SITE_LOGIN = os.getenv('TARGET_SITE_LOGIN') SITE_PROFILE = os.getenv('TARGET_SITE_PROFILE') if not all([API_ID, API_HASH, LOGIN_EMAIL, LOGIN_SENHA, PHONE_NUMBER, TARGET_CHANNEL]): raise EnvironmentError("Variáveis de ambiente incompletas. Verifique o .env") # ── Selenium: login no site ────────────────────────────────── def init_browser() -> webdriver.Chrome: options = webdriver.ChromeOptions() options.add_argument('--disable-blink-features=AutomationControlled') return webdriver.Chrome(options=options) def login_site(driver: webdriver.Chrome) -> bool: try: driver.get(SITE_LOGIN) wait = WebDriverWait(driver, 15) wait.until(EC.presence_of_element_located((By.NAME, "email"))).send_keys(LOGIN_EMAIL) driver.find_element(By.NAME, "password").send_keys(LOGIN_SENHA) # Captcha manual — única interação necessária while input("Resolva o captcha e pressione ENTER para continuar...") == "": break btn = wait.until(EC.element_to_be_clickable( (By.XPATH, "//button[@type='submit']") )) btn.click() time.sleep(2) driver.get(SITE_PROFILE) log.info("Login no site efetuado com sucesso.") return True except (NoSuchElementException, TimeoutException) as e: log.error(f"Falha no login do site: {e}") return False def aplicar_codigo(driver: webdriver.Chrome, codigo: str) -> None: try: wait = WebDriverWait(driver, 10) campo = wait.until(EC.presence_of_element_located((By.NAME, "code"))) campo.clear() campo.send_keys(codigo) btn = driver.find_element(By.XPATH, "//button[@type='submit']") btn.click() log.info(f"Código '{codigo}' inserido e submetido.") time.sleep(3) except (NoSuchElementException, TimeoutException) as e: log.warning(f"Não foi possível aplicar o código: {e}") # ── Telethon: monitoramento ─────────────────────────────────── def conectar_telegram() -> TelegramClient: client = TelegramClient('session_name', API_ID, API_HASH) client.connect() if not client.is_user_authorized(): client.send_code_request(PHONE_NUMBER) client.sign_in(PHONE_NUMBER, input("Código SMS recebido: ")) log.info("Telegram conectado.") return client def monitorar(client: TelegramClient, driver: webdriver.Chrome) -> None: canal_username = TARGET_CHANNEL.replace('https://t.me/', '') channel_info = client(functions.channels.GetFullChannelRequest(channel=canal_username)) chat_id = channel_info.full_chat.id last_id = None POLL_INTERVAL = 5 # segundos entre cada verificação log.info(f"Monitorando canal: {canal_username}") while True: try: messages = client.get_messages(chat_id, limit=1) if not messages: time.sleep(POLL_INTERVAL) continue msg = messages[0] if msg.id == last_id: time.sleep(POLL_INTERVAL) continue last_id = msg.id texto = msg.text or "" log.info(f"Nova mensagem [{msg.id}]: {texto[:80]}") match = re.search(r'PROMO CODE[\s\-:]+(\w+)', texto, re.IGNORECASE) if match: codigo = match.group(1) log.info(f"Código encontrado: {codigo}") aplicar_codigo(driver, codigo) else: log.debug("Mensagem sem código promocional.") time.sleep(POLL_INTERVAL) except Exception as e: log.error(f"Erro no loop de monitoramento: {e}") time.sleep(15) # back-off antes de tentar novamente # ── Entry point ─────────────────────────────────────────────── if __name__ == '__main__': driver = init_browser() if not login_site(driver): driver.quit() raise SystemExit("Abortado: falha no login do site.") with conectar_telegram() as client: try: monitorar(client, driver) finally: driver.quit() log.info("Bot encerrado. Browser fechado.")

Quais os riscos de automatizar interações com sites?

Automação de navegador não é ilegal por si só — é a base de testes de software, QA e RPA corporativo. Mas quando direcionada a serviços externos, o limite ético (e às vezes legal) depende do que os Termos de Uso daquele serviço permitem. Aqui no @CanalQb, nossa posição é clara: automatizar a leitura de promos públicas e aplicar um código uma vez é análogo ao que um usuário atento faria manualmente. Já tentativas repetidas de adivinhar códigos configuram abuso e foram propositalmente removidas deste script.

Resumo de boas práticas

Permitido Monitorar canal público e aplicar código real encontrado.

Permitido Usar a API oficial do Telegram (Telethon) com sua própria conta.

Evite Tentativas em massa de códigos aleatórios (brute force) — risco de banimento e possível enquadramento em fraude.

Evite Armazenar credenciais em .txt — use sempre .env + .gitignore.

Atenção Sempre leia os ToS do site-alvo antes de ativar o bot.

⚠️ Aviso Legal: Este conteúdo é informativo e educacional. O @CanalQb não incentiva o uso de automação em violação aos termos de serviço de terceiros. O uso deste script é de inteira responsabilidade do usuário final.


Referências e documentação oficial

Para ir além deste tutorial, a documentação do Telethon é excepcionalmente bem escrita — consulte especialmente a seção de eventos para substituir o polling por listeners reativos, o que reduz o consumo de CPU do bot em até 90%:


Feito com Master Rules Claude v5.0 · @CanalQb · 2026

Marcadores: Blogger Cripto IA Python Script Sistemas Telegram Tutorial

© abril 15, 2026 CanalQb — Python, Scripts, Automação, Airdrops e Criptomoedas | Web3 e Tech na Prática

Comentários