@issaychik

Телетон отправка альбома с описанием в одном посте, как сделать?

Скрипт граббер
как сделать отправку альбома в телеграм одним постом?
Что делать если при запрещенном слове отправляет подпись в основной канал?
# Функция для проверки допустимости сообщения
def message_allowed(channel, message):
    config = channels_config[channel]
    if not config['allow_photos'] and message.photo:
        return False
    if not config['allow_videos'] and message.video:
        return False
    if not config['allow_text'] and message.message:
        return False
    return True

# Функция для проверки наличия ключевых слов
def message_contains_blacklisted_keyword(channel, text):
    config = channels_config[channel]
    return any(keyword in text.lower() for keyword in config['keywords'])

# Функция для замены и удаления слов
def replace_and_delete_words(channel, text):
    config = channels_config[channel]
    deleted_words = []
    replaced_words = []

    # Удаление слов
    for word in config['delete_words']:
        if word in text:
            deleted_words.append(word)
            text = text.replace(word, '')

    # Замена слов
    for word, replacement in config['replace_words'].items():
        if word in text:
            replaced_words.append((word, replacement))
            text = text.replace(word, replacement)

    return text.strip(), deleted_words, replaced_words

# Регистрация обработчиков сообщений
async def register_handlers():
    for config in channels_config.values():
        @bot.on(events.NewMessage(chats=config['source']))
        async def handler(event):
            for channel_id, config in channels_config.items():
                if event.chat.username == config['source']:
                    # Проверка сообщения
                    if message_contains_blacklisted_keyword(channel_id, event.message.message):
                        return
                    
                    if not message_allowed(channel_id, event.message):
                        return

                    # Замена и удаление слов с логированием
                    modified_text, deleted_words, replaced_words = replace_and_delete_words(channel_id, event.message.message)

                    # Проверка подписи
                    signature_to_send = config['signature'] if not message_contains_blacklisted_keyword(channel_id, config['signature']) else ""

                    # Отправка текстового сообщения с подписью, если сообщение разрешено
                    await bot.send_message(config['target'], f"{modified_text}\n\n{signature_to_send}", silent=config['silent_mode'])
                    break
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы