From 500b6f60a2d503dbda239c29637ce8c8a474434e Mon Sep 17 00:00:00 2001
From: Mikan <72257910+Mikan-DS@users.noreply.github.com>
Date: Thu, 7 Aug 2025 00:35:40 +0300
Subject: [PATCH] Monolite
---
.gitignore | 11 ++
.idea/.gitignore | 8 --
.idea/TelegramAnonReciever.iml | 10 --
.../inspectionProfiles/profiles_settings.xml | 6 --
.idea/misc.xml | 4 -
.idea/modules.xml | 8 --
.idea/vcs.xml | 6 --
README.md | 44 ++++++++
main.py | 100 ++++++++++++++++++
requirements.txt | 2 +
10 files changed, 157 insertions(+), 42 deletions(-)
create mode 100644 .gitignore
delete mode 100644 .idea/.gitignore
delete mode 100644 .idea/TelegramAnonReciever.iml
delete mode 100644 .idea/inspectionProfiles/profiles_settings.xml
delete mode 100644 .idea/misc.xml
delete mode 100644 .idea/modules.xml
delete mode 100644 .idea/vcs.xml
create mode 100644 README.md
create mode 100644 requirements.txt
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f6f949c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,11 @@
+# Папки и файлы, которые не нужно добавлять в репозиторий
+__pycache__/
+*.pyc
+*.pyo
+*.pyd
+.env
+.venv/
+*.log
+.idea/
+.vscode/
+.DS_Store
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 13566b8..0000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/.idea/TelegramAnonReciever.iml b/.idea/TelegramAnonReciever.iml
deleted file mode 100644
index 2c80e12..0000000
--- a/.idea/TelegramAnonReciever.iml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
deleted file mode 100644
index 105ce2d..0000000
--- a/.idea/inspectionProfiles/profiles_settings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index a36b47e..0000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index c92c170..0000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..8dbb259
--- /dev/null
+++ b/README.md
@@ -0,0 +1,44 @@
+# Telegram Anonymous Bot
+
+Бот для анонимной связи с администрацией чата.
+
+## Описание
+Бот принимает текстовые сообщения от пользователей и анонимно пересылает их в чат модераторов.
+
+## Установка
+
+1. Склонируйте репозиторий:
+ ```bash
+ git clone https://github.com/ваш_репозиторий.git
+ cd ваш_репозиторий
+ ```
+
+2. Создайте виртуальное окружение:
+ ```bash
+ python -m venv venv
+ source venv/bin/activate # Для Linux/MacOS
+ venv\Scripts\activate # Для Windows
+ ```
+
+3. Установите зависимости:
+ ```bash
+ pip install -r requirements.txt
+ ```
+
+4. Создайте файл `.env` в корневой директории и добавьте туда следующие переменные:
+ ```
+ BOT_TOKEN=ваш_токен_бота
+ MODERATORS_CHAT_ID=id_чата_модераторов
+ ```
+
+5. Запустите бота:
+ ```bash
+ python bot.py
+ ```
+
+## Тестирование
+- Отправьте сообщение боту в личном чате.
+- Убедитесь, что сообщение анонимно пересылается в чат модераторов.
+
+## Лицензия
+MIT License
\ No newline at end of file
diff --git a/main.py b/main.py
index e69de29..4237473 100644
--- a/main.py
+++ b/main.py
@@ -0,0 +1,100 @@
+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)
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..c04fbc0
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,2 @@
+aiogram==2.25.1
+python-dotenv==1.0.0
\ No newline at end of file