From 735cfc10ace0f0d05819ace42682174dc0115e9a Mon Sep 17 00:00:00 2001 From: UdoChudo Date: Tue, 3 Sep 2024 19:35:55 +0500 Subject: [PATCH] Initial Commit --- .idea/.gitignore | 9 +++++ .idea/vcs.xml | 6 +++ Dockerfile | 22 +++++++++++ main.py | 98 ++++++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 20 ++++++++++ 5 files changed, 155 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/vcs.xml create mode 100644 Dockerfile create mode 100644 main.py create mode 100644 requirements.txt diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..3746130 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,9 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +.env diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..fba0d79 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,22 @@ +# Используем официальный Python образ в качестве базового +FROM python:3.11-slim + +LABEL authors="UdoChudo" + +# Устанавливаем рабочую директорию в контейнере +WORKDIR /app + +# Копируем файлы зависимостей в рабочую директорию +COPY requirements.txt . + +# Устанавливаем зависимости +RUN pip install --no-cache-dir -r requirements.txt + +# Копируем все файлы проекта в рабочую директорию +COPY main.py . + +# Устанавливаем переменную окружения для токена API +ENV API_TOKEN=your_api_token_here + +# Команда для запуска бота +CMD ["python", "main.py"] diff --git a/main.py b/main.py new file mode 100644 index 0000000..4d7943f --- /dev/null +++ b/main.py @@ -0,0 +1,98 @@ +import logging +import requests +from aiogram import Bot, Dispatcher, types +from aiogram.filters import Command +from aiogram.types import Message +from aiogram.methods import SendPhoto +from dotenv import load_dotenv +import os +import asyncio + +# Загрузка переменных окружения из .env файла +load_dotenv() + +# Получение токена из переменной окружения +API_TOKEN = os.getenv('BOT_TOKEN') +LOG_LEVEL = os.getenv("LOG_LEVEL") +if not API_TOKEN: + raise ValueError("No API_TOKEN provided. Please set the API_TOKEN environment variable.") + +# Настраиваем логирование +logging.basicConfig(level=logging.ERROR) + +# Инициализация бота +bot = Bot(token=API_TOKEN) +dp = Dispatcher() + +# Обработчик команды /boobs +@dp.message(Command(commands=['boobs'], prefix="!/")) +async def send_boobs(message: Message): + # Выполнение запроса к API oboobs + response = requests.get('http://api.oboobs.ru/boobs/1/1/random') + if response.status_code == 200: + data = response.json() + if data: + # Получение значения preview + preview = data[0]['preview'] + + # Убираем подстроку "_preview" из пути + img_path = preview.replace("_preview", "") + + # Формируем полный URL + img_url = f'https://media.oboobs.ru/{img_path}' + # Отправка картинки и сообщения в групповой чат + await bot.send_photo( + chat_id=message.chat.id, # Отправка в тот же чат, где была вызвана команда + photo=img_url, + has_spoiler=True, + caption=f"{message.from_user.username} заказал сиськи!" + ) + else: + await message.answer("Не удалось получить данные с сервера.") + else: + await message.answer("Ошибка при выполнении запроса к API.") + +# Обработчик команды /boobs +@dp.message(Command(commands=['butts'], prefix="!/")) +async def send_butts(message: Message): + # Выполнение запроса к API oboobs + response = requests.get('http://api.obutts.ru/butts/1/1/random') + if response.status_code == 200: + data = response.json() + if data: + # Получение значения preview + preview = data[0]['preview'] + + # Убираем подстроку "_preview" из пути + img_path = preview.replace("_preview", "") + + # Формируем полный URL + img_url = f'http://media.obutts.ru/{img_path}' + # Отправка картинки и сообщения в групповой чат + await bot.send_photo( + chat_id=message.chat.id, # Отправка в тот же чат, где была вызвана команда + photo=img_url, + has_spoiler=True, + caption=f"{message.from_user.username} заказал жопки!" + ) + else: + await message.answer("Не удалось получить данные с сервера.") + else: + await message.answer("Ошибка при выполнении запроса к API.") + + + +@dp.message() +async def default_message(message: types.Message): + pass + +async def main(): + # Регистрация обработчиков + dp.message.register(send_boobs) + dp.message.register(send_butts) + + # Запуск polling + await dp.start_polling(bot) + +if __name__ == '__main__': + asyncio.run(main()) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..8a6d288 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,20 @@ +aiofiles==23.2.1 +aiogram==3.12.0 +aiohappyeyeballs==2.4.0 +aiohttp==3.10.5 +aiosignal==1.3.1 +annotated-types==0.7.0 +attrs==24.2.0 +certifi==2024.8.30 +charset-normalizer==3.3.2 +frozenlist==1.4.1 +idna==3.8 +magic-filter==1.0.12 +multidict==6.0.5 +pydantic==2.8.2 +pydantic_core==2.20.1 +python-dotenv==1.0.1 +requests==2.32.3 +typing_extensions==4.12.2 +urllib3==2.2.2 +yarl==1.9.7