Files
Mace-AIO-Discord-Bot---With…/bot/cogs/commands/image.py

78 lines
3.5 KiB
Python

# ╔══════════════════════════════════════════════════════════════════╗
# ║ ║
# ║ +-+-+-+-+-+-+-+-+ ║
# ║ |H|e|x|a|H|o|s|t| ║
# ║ +-+-+-+-+-+-+-+-+ ║
# ║ ║
# ║ © 2026 HexaHost — All Rights Reserved ║
# ║ ║
# ║ discord ── https://discord.gg/hexahost ║
# ║ github ── https://github.com/theoneandonlymace ║
# ║ ║
# ╚══════════════════════════════════════════════════════════════════╝
import discord
from discord.ext import commands
from discord.ui import LayoutView, MediaGallery, TextDisplay
import aiohttp
import os
import random
from utils.cv2 import CV2, build_container
PEXELS_API_KEY = "js24mfV1bCCvgV6KfnEFvo5UnCHnATFarFnAdDrpDbczl7f0yXpjDF8x"
class ImageCommands(commands.Cog):
def __init__(self, bot):
self.bot = bot
async def fetch_pexels_image(self, query):
headers = {
"Authorization": PEXELS_API_KEY
}
async with aiohttp.ClientSession() as session:
async with session.get(f"https://api.pexels.com/v1/search?query={query}&per_page=50", headers=headers) as resp:
data = await resp.json()
if data.get("photos"):
image = random.choice(data["photos"])
return image["src"]["original"]
return None
async def fetch_waifu_image(self, category="waifu"):
async with aiohttp.ClientSession() as session:
async with session.get(f"https://api.waifu.pics/sfw/{category}") as resp:
data = await resp.json()
return data["url"]
async def send_image_view(self, ctx, title, url):
if url:
view = LayoutView(timeout=None)
gallery = MediaGallery()
gallery.add_item(media=url)
view.add_item(build_container(TextDisplay(f"**{title}**"), gallery))
await ctx.send(view=view)
else:
await ctx.send(view=CV2("❌ Error", f"No image found for {title.lower()}."))
@commands.hybrid_command(name="boy")
async def boy_image(self, ctx):
url = await self.fetch_pexels_image("handsome boy")
await self.send_image_view(ctx, "👦 Boy Pic", url)
# @commands.hybrid_command(name="girl")
# async def girl_image(self, ctx):
# url = await self.fetch_pexels_image("beautiful girl")
# await self.send_image_view(ctx, "👧 Girl Pic", url)
@commands.hybrid_command(name="couple")
async def couple_image(self, ctx):
url = await self.fetch_pexels_image("romantic couple")
await self.send_image_view(ctx, "💑 Couple Pic", url)
@commands.hybrid_command(name="anime")
async def anime_image(self, ctx):
url = await self.fetch_waifu_image("waifu")
await self.send_image_view(ctx, "🧚 Anime Waifu", url)
async def setup(bot):
await bot.add_cog(ImageCommands(bot))