Initial Commit
This commit is contained in:
parent
79051d60f7
commit
735cfc10ac
9
.idea/.gitignore
generated
vendored
Normal file
9
.idea/.gitignore
generated
vendored
Normal 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
6
.idea/vcs.xml
generated
Normal 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
22
Dockerfile
Normal 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
98
main.py
Normal 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
20
requirements.txt
Normal 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
|
||||||
Loading…
x
Reference in New Issue
Block a user