File size: 6,058 Bytes
8067274
 
 
e306b36
 
 
68c299b
8067274
e306b36
8067274
 
 
 
 
e306b36
 
 
 
4b66121
8067274
 
 
 
 
 
 
 
 
 
4b66121
 
8067274
 
4b66121
68c299b
3bc9cf3
 
4b66121
 
 
3bc9cf3
4b66121
 
8067274
 
 
 
 
4b66121
8067274
 
 
 
 
 
 
 
 
 
 
 
 
4b66121
 
 
 
8067274
4b66121
8067274
 
 
68c299b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
acb36ac
68c299b
 
 
 
 
 
 
 
 
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
import discord
from discord import app_commands
import aiohttp
import asyncio
from fastapi import FastAPI
import uvicorn
import random

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 pet on petsgo u")
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

    exists_data = await fetch_data("https://petsgo.biggamesapi.io/api/exists")
    rap_data = await fetch_data("https://petsgo.biggamesapi.io/api/Rap")
    collection_data = await fetch_data("https://petsgo.biggamesapi.io/api/collection/Pets")

    if not exists_data or not rap_data or not collection_data:
        await interaction.followup.send("error")
        return

    pet_exists = next((pet for pet in exists_data['data'] if pet['configData']['id'].lower() == petname.lower()), None)
    pet_rap = next((pet for pet in rap_data['data'] if pet['configData']['id'].lower() == petname.lower()), None)
    pet_info = next((pet for pet in collection_data['data'] if pet['configName'].lower() == petname.lower()), None)

    if not pet_exists or not pet_rap or not pet_info:
        await interaction.followup.send(f"Pet '{petname}' not found.")
        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)

@tree.command(name="petroll", description="Roll for a random pet")
async def petroll(interaction: discord.Interaction):
    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

    rap_data = await fetch_data("https://petsgo.biggamesapi.io/api/Rap")
    collection_data = await fetch_data("https://petsgo.biggamesapi.io/api/collection/Pets")

    if not rap_data or not collection_data:
        await interaction.followup.send("error")
        return

    pets = [pet for pet in collection_data['data'] if pet['configName'] in [p['configData']['id'] for p in rap_data['data']]]
    
    if not pets:
        await interaction.followup.send("No pets available to roll.")
        return

    rolled_pet = random.choice(pets)
    pet_rap = next((pet for pet in rap_data['data'] if pet['configData']['id'] == rolled_pet['configName']), None)

    if not pet_rap:
        await interaction.followup.send("Error retrieving pet information.")
        return

    rap_value = pet_rap['value']
    thumbnail_id = rolled_pet['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"You rolled: {rolled_pet['configData']['name']}", color=0x787878)
    embed.add_field(name="value", value=f"{rap_value:,} diamonds", inline=True)
    embed.add_field(name="difficulty", value=format_difficulty(rolled_pet['configData']['difficulty']), inline=True)
    embed.add_field(name="category", value=rolled_pet['category'], inline=True)
    embed.set_thumbnail(url=thumbnail_url)
    embed.set_footer(text="Click 'Roll Again' to roll again!")

    roll_again_button = discord.ui.Button(style=discord.ButtonStyle.primary, label="Roll Again", custom_id="roll_again")

    async def roll_again_callback(interaction: discord.Interaction):
        await interaction.response.defer()
        await petroll(interaction)

    roll_again_button.callback = roll_again_callback

    view = discord.ui.View()
    view.add_item(roll_again_button)

    await interaction.followup.send(embed=embed, view=view)

@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)