Files
TelegramAnonReciever/main.py
2025-08-07 00:35:40 +03:00

100 lines
4.7 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 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)