---
title: "Бот пересылки сообщений в группы телеграма"
summary: "Есть у меня куча групп и сильное не желание пересылать одно сообщения во все группы, потому я использую бот перессылки сообщений."
date: "June 13 2024"
draft: false
tags:
- Python
- Telegram
- BOT
---
# Подготовка

1. BotFaher берем токен

2. Достаём ID групп и пользоватлей

3. Пишем на питоне

## Готовый скрипт

```py
import logging
from aiogram import Bot, Dispatcher, types
from aiogram.types import ParseMode
from aiogram.utils import executor

# Ваш токен от BotFather
API_TOKEN = 'YOUR_BOT_TOKEN'

# Список ID групп, куда будут пересылаться сообщения
TARGET_GROUP_IDS = [-100, -100]  # замените на реальные ID ваших целевых групп

# Список ID разрешённых пользователей
ALLOWED_USER_IDS = [123456789, 123456789]  # замените на реальные ID разрешённых пользователей

# Настройка логирования
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

# Инициализация бота и диспетчера
bot = Bot(token=API_TOKEN, parse_mode=ParseMode.HTML)
dp = Dispatcher(bot)

# Обработчик команды /start
@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
    await message.reply("Привет! Я бот, который пересылает сообщения в группы.")

# Обработчик всех типов сообщений для пересылки из личных сообщений боту
@dp.message_handler(content_types=types.ContentType.ANY)
async def forward_message(message: types.Message):
    if message.chat.type == 'private':  # Проверка, что сообщение пришло в личный чат
        if message.from_user.id in ALLOWED_USER_IDS:  # Проверка, что пользователь разрешён
            for group_id in TARGET_GROUP_IDS:
                try:
                    if message.content_type == types.ContentType.TEXT:
                        await bot.send_message(chat_id=group_id, text=message.text, disable_notification=True)
                        logger.info(f"Текстовое сообщение отправлено в группу {group_id}")
                    elif message.content_type == types.ContentType.PHOTO:
                        await bot.send_photo(chat_id=group_id, photo=message.photo[-1].file_id, caption=message.caption, disable_notification=True)
                        logger.info(f"Фото отправлено в группу {group_id}")
                    elif message.content_type == types.ContentType.DOCUMENT:
                        await bot.send_document(chat_id=group_id, document=message.document.file_id, caption=message.caption, disable_notification=True)
                        logger.info(f"Документ отправлен в группу {group_id}")
                    elif message.content_type == types.ContentType.VIDEO:
                        await bot.send_video(chat_id=group_id, video=message.video.file_id, caption=message.caption, disable_notification=True)
                        logger.info(f"Видео отправлено в группу {group_id}")
                    elif message.content_type == types.ContentType.AUDIO:
                        await bot.send_audio(chat_id=group_id, audio=message.audio.file_id, caption=message.caption, disable_notification=True)
                        logger.info(f"Аудио отправлено в группу {group_id}")
                    elif message.content_type == types.ContentType.VOICE:
                        await bot.send_voice(chat_id=group_id, voice=message.voice.file_id, caption=message.caption, disable_notification=True)
                        logger.info(f"Голосовое сообщение отправлено в группу {group_id}")
                    elif message.content_type == types.ContentType.VIDEO_NOTE:
                        await bot.send_video_note(chat_id=group_id, video_note=message.video_note.file_id, disable_notification=True)
                        logger.info(f"Видеозаметка отправлена в группу {group_id}")
                    else:
                        logger.warning(f"Тип сообщения {message.content_type} не поддерживается")
                except Exception as e:
                    logger.error(f"Ошибка при отправке сообщения в группу {group_id}: {e}")
        else:
            logger.warning(f"Пользователь {message.from_user.id} не имеет доступа к боту")
            await message.reply("У вас нет доступа к этому боту.")

if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)
```



