Jump to content

[ERRO] Bot Telegram Python


guipovoa.ai

Postagens Recomendadas

Desde já obrigado pela atenção de todos. Estou tentando criar um "bot" para telegram que ao meu ver deveria ser muito simples. Basicamente ele conecta um canal e alguns links feeds e passa alimentar esse canal automaticamente. Criei o código em Python, fiz o teste, funcionou no telegram. Na hora de hospedar no Square Cloud começou dar uns erros referente ao message_handler. Não consegui resolver. Ao criar o requeriments.txt, o código que antes funcionava local, também começou a exibir erros. Alguma boa alma poderia me dar um help? Lembrando que não sou desenvolvedor, sou entusiasta tentando aprender. Abraços.

 

import telebot
from telebot import types
import feedparser
import time

# Token do bot gerado pelo BotFather do Telegram
bot_token = '6291508008:AAF19-LlzVS3bH1kaPiP_MM8HOiC5J950f8'

bot = TeleBot(bot_token)

# Dicionário para armazenar as últimas notícias por feed
last_news = {}

# Lista para armazenar os links dos feeds
feeds = []

# Variável para armazenar a ID do canal
channel_id = None

# Mensagem de boas-vindas para o usuário
welcome_message = "Olá! Bem-vindo ao meu bot de notícias! Para começar, por favor, insira a ID do canal onde você deseja que as notícias sejam postadas."

# Mensagem para solicitar os links dos feeds
feed_message = "Obrigado! Agora, por favor, envie os links dos feeds separados por vírgula (exemplo: https://rss.com/feed1.xml, https://rss.com/feed2.xml)."

# Comando para listar os feeds conectados
@bot.message_handler(commands=['listafeed'])
def list_feeds(message):
    global feeds
    if feeds:
        bot.send_message(message.chat.id, "Os feeds conectados são:\n" + "\n".join(feeds))
    else:
        bot.send_message(message.chat.id, "Nenhum feed foi conectado ainda.")

# Comando para listar os canais conectados
@bot.message_handler(commands=['listacanal'])
def list_channels(message):
    global channel_id
    if channel_id:
        bot.send_message(message.chat.id, "O canal conectado é: " + channel_id)
    else:
        bot.send_message(message.chat.id, "Nenhum canal foi conectado ainda.")

# Função para enviar uma mensagem ao usuário
def send_message(chat_id, message):
    bot.send_message(chat_id, message)

# Função para verificar se há novas notícias em um feed
def check_feed(feed_url):
    feed = feedparser.parse(feed_url)
    latest_news = feed.entries[0]
    news_title = latest_news.title
    news_link = latest_news.link
    if feed_url in last_news:
        if news_title != last_news[feed_url]:
            last_news[feed_url] = news_title
            return (news_title, news_link)
        else:
            return None
    else:
        last_news[feed_url] = news_title
        return (news_title, news_link)

# Função para enviar notícias para o canal
def send_news(channel_id, news_title, news_link):
    bot.send_message(channel_id, news_title + "\n\n" + news_link)

# Comando de boas-vindas
@bot.message_handler(commands=['start'])
def start(message):
    send_message(message.chat.id, welcome_message)

# Handler para conectar o canal e solicitar os links dos feeds
@bot.message_handler(regexp='^-\d+$')
def connect_channel(message):
    global channel_id
    channel_id = message.text
    send_message(message.chat.id, feed_message)

# Handler para receber os links dos feeds e conectar

@bot.message_handler(func=lambda message: ',' in message.text)
def connect_feed(message):
    global feeds
    feeds = message.text.split(',')
    send_message(message.chat.id, "Os feeds foram conectados com sucesso!")

# Função principal para executar o bot

def run_bot():
    while True:
        for feed_url in feeds:
            news = check_feed(feed_url)
        if news:
            send_news(channel_id, news[0], news[1])
        time.sleep(300)

if name == 'main':
    run_bot()

 

Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...