Files
BOTGroupNetwork/mainai.py
2024-06-17 10:53:33 +03:00

73 lines
5.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import logging
from aiogram import Bot, Dispatcher, types
from aiogram.types import ParseMode
from aiogram.utils import executor
# Ваш токен от BotFather
API_TOKEN = '7279978236:AAEnzp3moKdIUqOZ_rCLuim7tyQwVBJDGOU'
# ID группы, из которой будут пересылаться сообщения
#SOURCE_GROUP_ID = -1002243409068 # замените на реальный ID вашей основной группы
# Список ID групп, куда будут пересылаться сообщения
TARGET_GROUP_IDS = [-1002164079094, -1002243409068, -1002150063511, -1002191147447] # замените на реальные ID ваших групп
# Список ID разрешённых пользователей
ALLOWED_USER_IDS = [523763687, 1000964643, 794413216, 954527694] # замените на реальные ID разрешённых пользователей
# Настройка логирования с записью в файл
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('bot_logs.log'),
logging.StreamHandler()
]
)
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)