Spaces:
Building
Building
File size: 3,979 Bytes
8067274 e306b36 8067274 e306b36 8067274 e306b36 3bc9cf3 8067274 3bc9cf3 bc53674 8067274 bc53674 8067274 3bc9cf3 bc53674 3bc9cf3 bc53674 3bc9cf3 bc53674 3bc9cf3 bc53674 8067274 3bc9cf3 8067274 bc53674 8067274 e306b36 d1838af e306b36 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
import discord
from discord import app_commands
import aiohttp
import asyncio
from fastapi import FastAPI
import uvicorn
app = FastAPI()
intents = discord.Intents.default()
intents.message_content = True
bot = discord.Client(intents=intents)
tree = app_commands.CommandTree(bot)
@app.get("/")
async def read_root():
return {"Hello": "World"}
@tree.command(name="petsimgo", description="Get info on pets in PetsGo")
async def petsimgo(interaction: discord.Interaction, petname: str):
await interaction.response.defer()
async def fetch_data(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
if response.status == 200:
return await response.json()
return None
collection_data = await fetch_data("https://petsgo.biggamesapi.io/api/collection/Pets")
if not collection_data:
await interaction.followup.send("Error fetching pet data.")
return
matching_pets = [pet for pet in collection_data['data'] if petname.lower() in pet['configData']['name'].lower()]
if not matching_pets:
await interaction.followup.send(f"No pets found matching '{petname}'.")
return
if len(matching_pets) == 1:
await show_pet_details(interaction, matching_pets[0])
else:
pet_names = [pet['configData']['name'] for pet in matching_pets]
embed = discord.Embed(title="Matching Pets", color=0x787878)
embed.description = "\n".join(pet_names[:25]) # Limit to 25 results to avoid hitting Discord's character limit
embed.set_footer(text=f"Found {len(pet_names)} matching pets. Please use a more specific name.")
await interaction.followup.send(embed=embed)
async def show_pet_details(interaction, pet_info):
exists_data = await fetch_data("https://petsgo.biggamesapi.io/api/exists")
rap_data = await fetch_data("https://petsgo.biggamesapi.io/api/Rap")
pet_exists = next((p for p in exists_data['data'] if p['configData']['id'] == pet_info['configData']['id']), None)
pet_rap = next((p for p in rap_data['data'] if p['configData']['id'] == pet_info['configData']['id']), None)
if not pet_exists or not pet_rap:
await interaction.followup.send("Error fetching detailed pet information.")
return
exists_value = pet_exists['value']
rap_value = pet_rap['value']
thumbnail_id = pet_info['configData']['thumbnail'].split('://')[1]
thumbnail_url = f"https://api.rbxgleaks1.workers.dev/asset/{thumbnail_id}"
def format_difficulty(difficulty):
if difficulty >= 1_000_000_000:
return f"{difficulty / 1_000_000_000:.1f}B ({difficulty:,})"
elif difficulty >= 1_000_000:
return f"{difficulty / 1_000_000:.1f}M ({difficulty:,})"
elif difficulty >= 1_000:
return f"{difficulty / 1_000:.1f}K ({difficulty:,})"
else:
return f"{difficulty} ({difficulty:,})"
embed = discord.Embed(title=f"PetsGo: {pet_info['configData']['name']}", color=0x787878)
embed.add_field(name="Value", value=f"{rap_value:,} diamonds", inline=True)
embed.add_field(name="Existing", value=f"{exists_value:,}", inline=True)
embed.add_field(name="Difficulty", value=format_difficulty(pet_info['configData']['difficulty']), inline=True)
embed.add_field(name="Category", value=pet_info['category'], inline=True)
embed.set_thumbnail(url=thumbnail_url)
embed.set_footer(text="Hello everyone, can I please get a burrito now?")
await interaction.followup.send(embed=embed)
@bot.event
async def on_ready():
await tree.sync()
print(f"{bot.user} is now online!")
async def run_bot():
await bot.start("MTI5MjkxMDYzMjg3MzQ5MjU4Mw.GbVmvy.8kEhPZyNLrACzBWYEorT7UqNRME7gp6Lvz6lg8")
@app.on_event("startup")
async def startup_event():
asyncio.create_task(run_bot())
if __name__ == "__main__":
uvicorn.run("app:app", host="0.0.0.0", port=7860) |