init commit

This commit is contained in:
2025-07-16 06:10:22 +09:00
commit c3b9a4cda1
7 changed files with 125 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
.venv/
.env
.history

10
Dockerfile Normal file
View File

@@ -0,0 +1,10 @@
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "main.py"]

71
README.MD Normal file
View File

@@ -0,0 +1,71 @@
# MULTIBOT — Многобот на aiogram v3
Минималистичное Python-приложение, которое позволяет запускать **несколько Telegram-ботов** из одного кода. Каждый бот обрабатывает сообщения одинаково: отвечает пользователю, повторяя его сообщение с подписью.
## 📦 Стек
- Python 3.11+
- aiogram v3
- python-dotenv
- Docker / Docker Compose (опционально)
## 🔧 Возможности
- Единый код для всех ботов
- Добавление новых ботов — просто добавьте токен в `.env`
- Поддержка `.env` и Docker
- Ответ пользователю:
_«Это бот `{username}`, вы написали "{message}"»_
---
## 🚀 Быстрый запуск
## Пре-подготовка
### Установка Docker
```bash
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
```
Добавление пользователя в группу docker, чтобы не использовать sudo при работе с ним
```bash
sudo usermod -aG docker $USER
```
Или установимся вот так:
```bash
sudo apt-get install docker.io docker-compose-v2
sudo usermod -aG docker $USER
```
## Установка и запуск
### 1. клонируем репозиторий
```bash
git clone https://github.com/Artemyev/multibot.git
```
### 2. Правим `.env`
```bash
>> cp .env.sample .env
>> nano .env # или любой другой текстовый редактор
> BOT_TOKENS=TTOKEN1,TOKEN2,TOKEN3
```
сохряем и выходим
### 3. Запускаем
```bash
docker compose up -d --build
```
### 4. Проверяем
```bash
docker compose ps
```

8
docker-compose.yml Normal file
View File

@@ -0,0 +1,8 @@
version: '3.8'
services:
multibot:
build: .
env_file:
- .env
restart: unless-stopped

1
env.sample Normal file
View File

@@ -0,0 +1 @@
BOT_TOKENS=список токенов через запятую

30
main.py Normal file
View File

@@ -0,0 +1,30 @@
import asyncio
import os
from aiogram import Bot, Dispatcher, F
from aiogram.types import Message
from aiogram.enums import ParseMode
from dotenv import load_dotenv
from aiogram.client.default import DefaultBotProperties
load_dotenv()
BOT_TOKENS = os.getenv("BOT_TOKENS", "").split(",")
async def send_echo_message(message: Message, bot: Bot):
me = await bot.get_me()
await message.answer(f"Это бот {me.username}, вы написали \"{message.text}\"")
async def start_bot(token: str):
bot = Bot(
token,
default=DefaultBotProperties(parse_mode=ParseMode.HTML)
)
dp = Dispatcher()
dp.message.register(send_echo_message, F.text)
await dp.start_polling(bot)
async def main():
await asyncio.gather(*(start_bot(token) for token in BOT_TOKENS if token))
if __name__ == "__main__":
asyncio.run(main())

2
requirements.txt Normal file
View File

@@ -0,0 +1,2 @@
aiogram==3.*
python-dotenv==1.0.0