Files
TelegramAnonReciever/main.py

100 lines
4.7 KiB
Python
Raw Normal View History

2025-08-07 00:35:40 +03:00
import os
import logging
from aiogram import Bot, Dispatcher, types
from aiogram.utils import executor
from dotenv import load_dotenv
# Загрузка переменных окружения из файла .env
load_dotenv()
# Инициализация бота и диспетчера
BOT_TOKEN = os.getenv("BOT_TOKEN")
MODERATORS_CHAT_ID = int(os.getenv("MODERATORS_CHAT_ID"))
bot = Bot(token=BOT_TOKEN)
dp = Dispatcher(bot)
# Настройка логирования
logging.basicConfig(level=logging.INFO)
# Обработчик команды /start
@dp.message_handler(commands=["start"])
async def send_welcome(message: types.Message):
await message.answer(
"Привет! Я анонимный бот для связи с администрацией. "
"Просто отправьте мне сообщение, и я передам его администраторам."
)
# Обработчик команды /whereiam (только для групп)
@dp.message_handler(commands=["whereiam"], chat_type=[types.ChatType.GROUP, types.ChatType.SUPERGROUP])
async def get_group_id(message: types.Message):
chat_id = message.chat.id
chat_title = message.chat.title or "Беседа без названия"
await message.answer(
f"ID этой группы: `{chat_id}`\nНазвание: {chat_title}",
parse_mode="Markdown"
)
# Обработчик текстовых сообщений
@dp.message_handler(content_types=types.ContentTypes.TEXT)
async def handle_text_message(message: types.Message):
user_id = message.from_user.id
user_message = message.text
# Логирование входящего сообщения
logging.info(f"Получено текстовое сообщение от пользователя {user_id}: {user_message}")
# Пересылка текстового сообщения в чат модераторов
try:
await bot.send_message(
chat_id=MODERATORS_CHAT_ID,
text=f"Анонимное текстовое сообщение:\n{user_message}"
)
await message.answer("Ваше сообщение успешно отправлено администраторам!")
except Exception as e:
logging.error(f"Ошибка при отправке сообщения: {e}")
await message.answer("Произошла ошибка при отправке сообщения. Попробуйте позже.")
# Обработчик медиа-сообщений (фото, видео, аудио, документы и т.д.)
@dp.message_handler(content_types=[
types.ContentType.PHOTO,
types.ContentType.VIDEO,
types.ContentType.AUDIO,
types.ContentType.DOCUMENT,
types.ContentType.STICKER,
types.ContentType.VOICE,
types.ContentType.VIDEO_NOTE
])
async def handle_media_message(message: types.Message):
user_id = message.from_user.id
content_type = message.content_type
# Логирование входящего сообщения
logging.info(f"Получено медиа-сообщение типа {content_type} от пользователя {user_id}")
# Пересылка медиа-сообщения в чат модераторов
try:
if content_type == "photo":
# Отправляем самую большую версию фото
await bot.send_photo(chat_id=MODERATORS_CHAT_ID, photo=message.photo[-1].file_id)
elif content_type == "video":
await bot.send_video(chat_id=MODERATORS_CHAT_ID, video=message.video.file_id)
elif content_type == "audio":
await bot.send_audio(chat_id=MODERATORS_CHAT_ID, audio=message.audio.file_id)
elif content_type == "document":
await bot.send_document(chat_id=MODERATORS_CHAT_ID, document=message.document.file_id)
elif content_type == "sticker":
await bot.send_sticker(chat_id=MODERATORS_CHAT_ID, sticker=message.sticker.file_id)
elif content_type == "voice":
await bot.send_voice(chat_id=MODERATORS_CHAT_ID, voice=message.voice.file_id)
elif content_type == "video_note":
await bot.send_video_note(chat_id=MODERATORS_CHAT_ID, video_note=message.video_note.file_id)
await message.answer("Ваше медиа-сообщение успешно отправлено администраторам!")
except Exception as e:
logging.error(f"Ошибка при отправке медиа-сообщения: {e}")
await message.answer("Произошла ошибка при отправке сообщения. Попробуйте позже.")
# Запуск бота
if __name__ == "__main__":
executor.start_polling(dp, skip_updates=True)