Initial Commit

This commit is contained in:
Udo Chudo 2024-09-03 19:35:55 +05:00
parent 79051d60f7
commit 735cfc10ac
5 changed files with 155 additions and 0 deletions

9
.idea/.gitignore generated vendored Normal file
View File

@ -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

6
.idea/vcs.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

22
Dockerfile Normal file
View File

@ -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"]

98
main.py Normal file
View File

@ -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())

20
requirements.txt Normal file
View File

@ -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