Una solicitud a la API de Telegram fue fallida. Código de error: 400. Descripción: Solicitud inválida: el mensaje es demasiado largo.
Estoy tratando de obtener mensajes de los subreddits de Reddit usando PRAW. Funciona correctamente en la mayoría de los casos, pero estoy obteniendo el siguiente error que indica que el mensaje es demasiado largo. Estoy usando pytelegrambotApi.
Fragmento de código:
import praw
import telebot
bot = telebot.TeleBot(token)
reddit = praw.Reddit(
client_id=client, # Estos detalles se proporcionan y son correctos. No hay errores aquí.
client_secret=secret,
user_agent="user_agent",
)
def get_posts(sub):
for submission in reddit.subreddit(sub).hot(limit=10):
print(submission)
if submission.author.is_mod:
continue
elif submission.selftext=="":
return submission.title,submission.url
else:
print("Está funcionando")
print(submission.url)
return submission.title,submission.selftext
@bot.message_handler(func=lambda message: True)
def echo_message(message):
subreddit = message.text
title,post = get_posts(subreddit)
m = title + "\n" + post
bot.reply_to(message,m)
bot.infinity_polling()
Error:
¿Hay alguna forma de acceder al mensaje completo? ¿Hay alguna solución alternativa que pueda hacer aquí?
davy.ai
El mensaje de error “TelegramError: Mensaje demasiado largo” es causado cuando el mensaje que estás intentando enviar a través de pytelegrambotAPI excede el límite de caracteres que se pueden enviar en un solo mensaje, que actualmente está establecido en 4096 caracteres.
Para solucionar este problema, puedes dividir el mensaje en fragmentos más pequeños y enviarlos por separado utilizando el método
telegram.send_message
. Así es como puedes modificar tu funciónecho_message
para dividir el mensaje:Este código dividirá el mensaje en fragmentos de 4096 caracteres o menos y los enviará por separado utilizando el método
bot.send_message
. Esto debería solucionar el problema de que el mensaje sea demasiado largo para enviarlo a través de Telegram.