Spaces:
Sleeping
Sleeping
import discord | |
from discord import app_commands | |
import os | |
from dotenv import load_dotenv | |
import requests | |
load_dotenv() | |
# Set up intents | |
intents = discord.Intents.default() | |
client = discord.Client(intents=intents) | |
tree = app_commands.CommandTree(client) | |
# GLIF Simple API endpoint | |
GLIF_API_URL = "https://simple-api.glif.app" | |
# Function to call the GLIF API | |
def generate_image(prompt, aspect_ratio): | |
# Prepare the payload for the GLIF API | |
payload = { | |
"id": "cm3ugmzv2002gnckiosrwk6xi", # Glif ID | |
"inputs": [prompt, aspect_ratio] | |
} | |
# Set up headers with the API token | |
headers = {"Authorization": f"Bearer {os.getenv('GLIF_API_TOKEN')}"} | |
# Make the request to the GLIF API | |
response = requests.post(GLIF_API_URL, json=payload, headers=headers) | |
if response.status_code == 200: | |
# Parse the response | |
response_data = response.json() | |
if "output" in response_data: | |
# Return the image URL | |
return response_data["output"] | |
elif "error" in response_data: | |
# Handle errors (even though the status code is 200) | |
return f"Error: {response_data['error']}" | |
else: | |
return f"API request failed with status code: {response.status_code}" | |
# Define a slash command for image generation | |
async def generate_command(interaction: discord.Interaction, prompt: str, | |
aspect_ratio: app_commands.Choice[str]): | |
"""Generates an image based on the user's prompt and aspect ratio.""" | |
await interaction.response.defer() # Acknowledge the interaction | |
try: | |
image_url = generate_image(prompt, aspect_ratio.value) | |
if image_url.startswith("http"): | |
await interaction.followup.send( | |
f"Here's your generated image based on the prompt '{prompt}' with aspect ratio {aspect_ratio.name}:\n{image_url}" | |
) | |
else: | |
await interaction.followup.send( | |
f"Sorry, I couldn't generate an image. {image_url}") | |
except Exception as e: | |
await interaction.followup.send(f"An error occurred: {e}") | |
# Define the hello slash command | |
async def hello_command(interaction): | |
await interaction.response.send_message("Hello there!") | |
async def on_ready(): | |
await tree.sync() # Sync the slash commands with discord | |
print("Bot is ready!") | |
# Get the token from an environment variable | |
token = os.getenv("DISCORD_BOT_TOKEN") | |
# check if the token is a string | |
if isinstance(token, str): | |
client.run(token) | |
else: | |
print("Invalid token format") | |