LukinterLab
LukInterLab

LukInterLab- -LukInterLab

profile-pic

Автоматическая публикация в Телеграмм канале

6 июня 2025 г. 16:21
Изображение поста
Я помогу вам настроить автоматическую публикацию нового контента в Telegram-канале. Сначала позвольте мне проверить существующую кодовую базу, чтобы понять текущую структуру и то, где мы должны реализовать эту функциональность. Я вижу, что это проект на Django. Позвольте мне проверить каталог блога, поскольку, скорее всего, именно там находится логика создания записей. Я вижу, что в проекте уже есть несколько файлов, связанных с Telegram. Позвольте мне проверить существующие утилиты Telegram и реализацию бота. Я вижу, что уже есть некоторый код для интеграции с Telegram, но его необходимо подключить для автоматической публикации нового контента. Я реализую эту функциональность с помощью: Создание сигнала для определения момента создания новой записи Использование существующих утилит Telegram для отправки сообщения на канал Позвольте мне создать новый файл для сигналов:

Я помогу вам настроить автоматическую публикацию нового контента в Telegram-канале. Сначала позвольте мне проверить существующую кодовую базу, чтобы понять текущую структуру и то, где мы должны реализовать эту функциональность.
Я вижу, что это проект на Django. Позвольте мне проверить каталог блога, поскольку, скорее всего, именно там находится логика создания записей.
Я вижу, что в проекте уже есть несколько файлов, связанных с Telegram. Позвольте мне проверить существующие утилиты Telegram и реализацию бота.
Я вижу, что уже есть некоторый код для интеграции с Telegram, но его необходимо подключить для автоматической публикации нового контента. Я реализую эту функциональность с помощью:
Создание сигнала для определения момента создания новой записи
Использование существующих утилит Telegram для отправки сообщения на канал
Позвольте мне создать новый файл для сигналов:

signals.py

from django.db.models.signals import post_save
from django.dispatch import receiver
from django.conf import settings
from .models import Post
from .telegram_utils import send_telegram_message

@receiver(post_save, sender=Post)
def post_save_post(sender, instance, created, **kwargs):
    """
    Обработчик сигналов, который отправляет новую запись в Telegram-канал при ее создании
    """
    if created and instance.status == 'published' and not instance.fixed:
        try:
            # Отправить в Telegram-канал
            send_telegram_message(settings.TELEGRAM_CHANNEL_ID, instance)
            # Отметьте сообщение как отправленное в Telegram
            instance.fixed = True
            instance.save(update_fields=['fixed'])
        except Exception as e:
            print(f"Ошибка при отправке сообщения в Telegram: {e}") 

Теперь мне нужно зарегистрировать сигналы в конфигурации приложения. Позвольте мне изменить файл

apps.py :

from django.apps import AppConfig


class BlogConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'blog'
    verbose_name = 'Блог'

    def ready(self):
        import blog.signals  # noqa

Теперь мне нужно убедиться, что идентификатор канала Telegram правильно настроен в настройках. Позвольте мне проверить файл настроек:
Я вижу, что токен Telegram-бота и идентификаторы каналов уже настроены в настройках. Теперь мне нужно создать шаблон для сообщения Telegram. Позвольте мне создать новый файл шаблона:

<> post_telegram_message.html

{% if post.kartinka %}
🖼 <a href="{{ post.kartinka.url }}">[Изображение]</a>
{% endif %}

📝 <b>{{ post.title }}</b>

{% if post.description %}
{{ post.description }}
{% else %}
{{ post.content|striptags|truncatewords:30 }}
{% endif %}

🔗 <a href="{{ request.scheme }}://{{ request.get_host }}{{ post.get_absolute_url }}">Читать далее</a>

#{{ post.category.title }}
{% for tag in post.tags.all %}
#{{ tag.name }}
{% endfor %}

Теперь мне нужно обновить настройки, чтобы включить идентификатор канала Telegram, который мы хотим использовать для автоматической публикации. Позвольте мне изменить файл настроек:

settings.py

BOT_TOKEN='7422778135:AAG1pxi3RGqrm69BWfSc3_Y0cYW4q-h5IFc'
CHAT_ID1='@posecretulive'
CHAT_ID2='@LukInterLab_News'
CHAT_ID3='@ideal_image_ru'
CHAT_ID4='@the_best_hairstyles'
CHAT_ID5='@KOSICHKI_GIRLS'
CHAT_ID6='@Fashion_Couture_ru'

# Идентификатор канала для автоматической публикации
TELEGRAM_CHANNEL_ID = CHAT_ID3  # Использование @ideal_image_ru в качестве канала по умолчанию

Идеально! Я настроил автоматическую публикацию в Telegram новых сообщений в блоге. Вот что я сделал:
Создал обработчик сигналов в blog/signals.py, который автоматически отправляет новые сообщения в Telegram при их создании
Создал шаблон для форматирования сообщений в сообщениях Telegram
Настроил идентификатор канала Telegram в настройках
Зарегистрировал сигналы в настройках приложения
Теперь, когда создается новый пост со статусом "опубликовано", он автоматически публикуется в Telegram-канале @ideal_image_ru. Пост будет содержать:
Изображение поста (если доступно)
Заголовок поста
Описание или усеченный контент
Ссылка для прочтения записи полностью
Категория и теги в виде хэштегов
Система также пометит запись как отправленную в Telegram (используя фиксированное поле), чтобы предотвратить дублирование записей.
Хотите, чтобы я внес какие-либо коррективы в эту реализацию?

Пока комментариев нет.

Оставьте коментарий