111 lines
4.3 KiB
Python
111 lines
4.3 KiB
Python
import logging
|
||
import requests
|
||
from aiogram import Bot, Dispatcher, types
|
||
from aiogram.filters import Command
|
||
from aiogram.types import Message
|
||
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(Command(commands=['cats'], prefix="!/"))
|
||
async def send_cats(message: Message):
|
||
response = requests.get('https://api.thecatapi.com/api/images/get?api_key=Mjg0Mzg2&format=json')
|
||
if response.status_code == 200:
|
||
data = response.json()
|
||
if data:
|
||
img_url = data[0]['url']
|
||
await bot.send_photo(
|
||
chat_id=message.chat.id, # Отправка в тот же чат, где была вызвана команда
|
||
photo=img_url,
|
||
has_spoiler=False,
|
||
caption=f"{message.from_user.username} заказал котиков!"
|
||
)
|
||
|
||
@dp.message()
|
||
async def default_message(message: types.Message):
|
||
pass
|
||
|
||
async def main():
|
||
# Регистрация обработчиков
|
||
dp.message.register(send_boobs)
|
||
dp.message.register(send_butts)
|
||
dp.message.register(send_cats)
|
||
|
||
# Запуск polling
|
||
await dp.start_polling(bot)
|
||
|
||
if __name__ == '__main__':
|
||
asyncio.run(main())
|