Скрипт граббер
как сделать отправку альбома в телеграм одним постом?
Что делать если при запрещенном слове отправляет подпись в основной канал?
# Функция для проверки допустимости сообщения
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