top of page

Criar alerta no telegram com Python

  • Foto do escritor: Amanda Nascimento
    Amanda Nascimento
  • 27 de mai.
  • 3 min de leitura

Atualizado: 29 de mai.

Etapa 1 – Criar o bot no Telegram

Acesse @BotFather no Telegram. (https://t.me/botfather)

Envie o comando /newbot.

Dê um nome e um nome de usuário (tem que terminar em bot).

O BotFather vai te dar um Token do bot (guarde)





Etapa 2 – Obter o seu chat ID


Envie uma mensagem qualquer para o seu novo bot.


Acesse este link no navegador (substitua TOKEN_DO_BOT):



Veja abaixo que na minha primeira tentativa não apareceu nada..

Envie novamente mais uma mensagem para o seu boot e atualize a página ate aparecer o id

precisaremos deste id pois (é para ele que o bot enviará as notificações)



  1. Procure algo assim no retorno:

    json

    CopiarEditar

    "chat":{"id":123456789,...


Anote esse número — é o seu chat ID.




Etapa 3 – Criar o projeto no Replit


  1. Vá para https://replit.com

  2. Clique em "Create Repl"

  3. Escolha Python

  4. Nomeie como quiser (ex: sqlsaturday-checker)



Etapa 4 – Cole seu código no main.py


No meu script, criei um alerta para ser avisada no telegram quando surgir um evento que quero ir, em determinadas cidades.

TOKEN = "SEU_TOKEN_DO_BOT" CHAT_ID = "SEU_CHAT_ID"

import requests
from bs4 import BeautifulSoup
import unicodedata
import time

# Token e chat_id do seu bot
TOKEN = "seu token aqui"
CHAT_ID = "seu id aqui"

# Função para remover acentos
def remover_acentos(texto):
    return ''.join(
        letra for letra in unicodedata.normalize('NFD', texto)
        if unicodedata.category(letra) != 'Mn'
    )

# Função para enviar mensagem via Telegram
def enviar_mensagem(mensagem):
    url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
    payload = {
        "chat_id": CHAT_ID,
        "text": mensagem
    }
    try:
        response = requests.post(url, data=payload)
        if response.status_code != 200:
            print("Erro ao enviar mensagem:", response.text)
    except Exception as e:
        print("Erro na requisição do Telegram:", e)

# Função principal
def verificar_cidades_sqlsaturday():
    url = "https://sqlsaturday.com/#reserved"

    try:
        response = requests.get(url)
        response.raise_for_status()
        response.encoding = 'utf-8'

        soup = BeautifulSoup(response.text, 'html.parser')
        texto_pagina = soup.get_text().lower()
        texto_pagina_sem_acentos = remover_acentos(texto_pagina)

        cidades = ["belo horizonte", "são paulo"]
        cidades_sem_acentos = [remover_acentos(cidade.lower()) for cidade in cidades]

        encontrados = [cidade for cidade, cidade_sem_acentos in zip(cidades, cidades_sem_acentos)
                       if cidade_sem_acentos in texto_pagina_sem_acentos]

        if encontrados:
            mensagem = "✅ Cidades encontradas na página SQL Saturday:\n" + "\n".join(f" - {cidade.title()}" for cidade in encontrados)
            print(mensagem)
            enviar_mensagem(mensagem)
        else:
            print("❌ Nenhuma das cidades encontradas na página.")

    except requests.exceptions.RequestException as e:
        print("Erro ao acessar a página:", e)


verificar_cidades_sqlsaturday()



Etapa 5 – Executar o script





Clique no botão "Run" no topo do Replit. Se tudo estiver certo, você vai receber uma mensagem no Telegram de acordo com o print do seu código.

Na guia console, você poderá conferir o resultado também.




pyproject.toml


Etapa 6 – Automatizar com UptimeRobot


Se quiser que o script rode de tempo em tempo (ex: a cada 5 minutos):

Crie uma conta gratuita em https://uptimerobot.com




No Replit, crie um servidor Flask básico para manter o projeto “acordado”.


por fim, coloquei no script abaixo para atualizar sempre as 8 da manha e me enviar o retorno do script no telegram


import requests
from bs4 import BeautifulSoup
import unicodedata
from datetime import datetime

# Token e chat_id do seu bot
TOKEN = "seu token"
CHAT_ID = "seu id"

# Função para remover acentos
def remover_acentos(texto):
    return ''.join(
        letra for letra in unicodedata.normalize('NFD', texto)
        if unicodedata.category(letra) != 'Mn'
    )

# Função para enviar mensagem via Telegram
def enviar_mensagem(mensagem):
    url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
    payload = {
        "chat_id": CHAT_ID,
        "text": mensagem
    }
    try:
        response = requests.post(url, data=payload)
        if response.status_code != 200:
            print("Erro ao enviar mensagem:", response.text)
    except Exception as e:
        print("Erro na requisição do Telegram:", e)

# Função principal
def verificar_cidades_sqlsaturday():
    url = "https://sqlsaturday.com/#reserved"

    try:
        response = requests.get(url)
        response.raise_for_status()
        response.encoding = 'utf-8'

        soup = BeautifulSoup(response.text, 'html.parser')
        texto_pagina = soup.get_text().lower()
        texto_pagina_sem_acentos = remover_acentos(texto_pagina)

        cidades = ["belo horizonte", "são paulo", "boston", "flórida"]
        cidades_sem_acentos = [remover_acentos(cidade.lower()) for cidade in cidades]

        encontrados = [cidade for cidade, cidade_sem_acentos in zip(cidades, cidades_sem_acentos)
                       if cidade_sem_acentos in texto_pagina_sem_acentos]

        if encontrados:
            mensagem = "✅ Cidades encontradas na página SQL Saturday:\n" + "\n".join(f" - {cidade.title()}" for cidade in encontrados)
            print(mensagem)
            enviar_mensagem(mensagem)
        else:
            print("❌ Nenhuma das cidades encontradas na página.")

    except requests.exceptions.RequestException as e:
        print("Erro ao acessar a página:", e)

# Define a hora que o script deve rodar (formato 24h)
HORA_EXECUCAO = 8  # 08:00 da manhã

# Verifica se está na hora certa para rodar
agora = datetime.now()
if agora.hour == HORA_EXECUCAO:
    verificar_cidades_sqlsaturday()
else:
    print(f"⏳ Ainda não é hora de rodar o bot. Hora atual: {agora.hour}:00")




Posts recentes

Ver tudo

© 2017-2025  Criado e desenvolvido por Amanda Nascimento

  • Discord
  • GitHub
  • youtube
  • LinkedIn Amanda
bottom of page