@andrew053

Как мне сделать чтобы бот пересылал сообщения?

Мне нужно чтобы бот пересылал сообщения из source_group в target_group, надо сделать чтобы он их пересылал моментально, но у меня он даже не читает сообщения в группе источник вот код:
import telebot
from telebot import types

TOKEN = ''
bot = telebot.TeleBot(TOKEN)

target_groups = set()
source_groups = set()

@bot.message_handler(commands=['start'])
def welcome(message):


    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton("Добавить источник группу ")
    item2 = types.KeyboardButton("Добавить целевую группу")
    item3 = types.KeyboardButton("Помощь")
    item4 = types.KeyboardButton("Список групп")
    item5 = types.KeyboardButton("Удалить группу")

    markup.add(item1, item2, item3, item4, item5)

    bot.send_message(message.chat.id, 'Привет, я бот для публикации постов  в группах по указаному времени', reply_markup=markup)


@bot.message_handler(content_types=['text'])
def add_group(message):
    if message.text == 'Добавить источник группу':
        bot.send_message(message.chat.id, 'Введите название через @ , которую нужно добавить в источник:')
        bot.register_next_step_handler(message, process_group_link_step)

    elif message.text == 'Добавить целевую группу':
        bot.send_message(message.chat.id, 'Введите название через @, которую нужно добавить в целевые:')
        bot.register_next_step_handler(message, process_target_group_link_step)

    elif message.text == 'Список групп':
        bot.send_message(message.chat.id, f"Источники новостей:\n{source_groups}\n\nЦелевые группы:\n{target_groups}")
    elif message.text == 'Удалить группу':
        bot.send_message(message.chat.id, 'Введите ID группы, которую нужно удалить:')
        bot.register_next_step_handler(message, process_remove_group_step)


def process_group_link_step(message):
    try:
        source_group_link = message.text.strip()
        source_group = bot.get_chat(source_group_link)
        source_group_id = source_group.id
        bot_member = bot.get_chat_member(source_group_id, bot.get_me().id)
        if bot_member.status in ['administrator', 'creator']:
            source_groups.add(source_group_id)
            bot.reply_to(message,
                         f'Группа {source_group.title} ({source_group.id}) добавлена в список источников новостей')
        else:
            bot.reply_to(message, 'Бот не является администратором группы')
    except Exception as e:
        bot.reply_to(message, 'Произошла ошибка при добавлении группы, попробуйте еще раз')
        print(e)


def process_target_group_link_step(message):
    try:
        target_group_link = message.text.strip()
        target_group = bot.get_chat(target_group_link)
        target_group_id = target_group.id
        bot_member = bot.get_chat_member(target_group_id, bot.get_me().id)
        if bot_member.status in ['administrator', 'creator']:
            target_groups.add(target_group_id)
            bot.reply_to(message, f'Группа {target_group.title} ({target_group.id}) добавлена в список целевых групп')
        else:
            bot.reply_to(message, 'Бот не является администратором группы')
    except Exception as e:
        bot.reply_to(message, 'Произошла ошибка при добавлении группы, попробуйте еще раз')
        print(e)
def process_remove_group_step(message):
    try:
        group_id = int(message.text.strip())
        if group_id in source_groups:
            source_groups.remove(group_id)
            bot.reply_to(message, f'Группа с ID {group_id} удалена из списка источников новостей')
        elif group_id in target_groups:
            target_groups.remove(group_id)
            bot.reply_to(message, f'Группа с ID {group_id} удалена из списка целевых групп')
        else:
            bot.reply_to(message, f'Группа с ID {group_id} не найдена в списках')
    except ValueError:
        bot.reply_to(message, 'Неверный формат ID группы')
    except Exception as e:
        bot.reply_to(message, 'Произошла ошибка при удалении группы, попробуйте еще раз')
        print(e)


@bot.message_handler(content_types=['text', 'photo', 'video'])
def forward_message_to_target_group(message):
    chat_id = message.chat.id
    if chat_id in source_groups:
        for target_group_id in target_groups:
            if message.content_type == 'text':
                send_text_message(target_group_id, message)
            elif message.content_type == 'photo':
                send_photo_message(target_group_id, message)
            elif message.content_type == 'video':
                send_video_message(target_group_id, message)

def send_text_message(chat_id, message):
    caption_entities = message.parse_entities(types.MessageEntity)
    bot.send_message(chat_id, text=message.text, entities=caption_entities)

def send_photo_message(chat_id, message):
    caption_entities = message.parse_entities(types.MessageEntity)
    bot.send_photo(chat_id, photo=message.photo[-1].file_id, caption=message.caption, caption_entities=caption_entities)

def send_video_message(chat_id, message):
    caption_entities = message.parse_entities(types.MessageEntity)
    bot.send_video(chat_id, video=message.video.file_id, caption=message.caption, caption_entities=caption_entities)
  • Вопрос задан
  • 208 просмотров
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix
yellow
У вас два хендлера на текст. Срабатывает только верхний. Поэтому ботом должны обрабатываться только картинки и видео. Объедините под один, либо доработайте второй обработчик
Ответ написан
Ваш ответ на вопрос

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

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