87 lines
2.6 KiB
Python
Executable File
87 lines
2.6 KiB
Python
Executable File
from bs4 import BeautifulSoup
|
|
from discord import option
|
|
from discord.ext import commands
|
|
import discord
|
|
import requests
|
|
|
|
|
|
class Games(commands.Cog):
|
|
def __init__(self, bot):
|
|
self.bot: commands.Bot = bot
|
|
|
|
@commands.slash_command(
|
|
guild_ids=None,
|
|
name="apex",
|
|
description="Query the game's API for data about a player",
|
|
)
|
|
async def apex(self, ctx: commands.Context, player):
|
|
import apex_legends
|
|
|
|
try:
|
|
await ctx.defer()
|
|
embed = apex_legends.get_player(player)
|
|
await ctx.send_followup(embed=embed)
|
|
except Exception as e:
|
|
await ctx.send(e)
|
|
|
|
async def get_ffxiv_worlds(ctx: discord.AutocompleteContext):
|
|
url = "https://na.finalfantasyxiv.com/lodestone/worldstatus/"
|
|
|
|
response = requests.get(url)
|
|
soup = BeautifulSoup(response.text, "html.parser")
|
|
|
|
# Find all elements with class "world-list__world_name"
|
|
world_name_elements = soup.find_all(class_="world-list__world_name")
|
|
|
|
# Loop through each element and extract its contents
|
|
worlds = [
|
|
element.get_text(strip=True)
|
|
for element in soup.find_all(class_="world-list__world_name")
|
|
]
|
|
|
|
return worlds
|
|
|
|
@commands.slash_command(
|
|
guild_ids=None,
|
|
name="ffxiv",
|
|
description="Query the game's API for data about a player",
|
|
)
|
|
@option(
|
|
"player_name", description="Your player's first and last name", required=True
|
|
)
|
|
async def ffxiv(
|
|
self,
|
|
ctx: commands.Context,
|
|
player_name: str,
|
|
server: discord.Option(
|
|
str, autocomplete=discord.utils.basic_autocomplete(get_ffxiv_worlds)
|
|
),
|
|
):
|
|
import ffxiv
|
|
|
|
try:
|
|
embed = ffxiv.make_request(name=player_name.lower(), server=server.lower())
|
|
await ctx.defer()
|
|
await ctx.send_followup(embed=embed)
|
|
except Exception:
|
|
await ctx.send(
|
|
"I encountered an error while searching for that player.\nPlease check that your player name and server are spelled correctly"
|
|
)
|
|
|
|
@commands.slash_command(
|
|
guild_ids=None,
|
|
name="2042",
|
|
description="Query Battlefield 2042's API for data about a player",
|
|
)
|
|
@option("player_name", description="Your Origin/EA account name", required=True)
|
|
async def battlefield(self, ctx: commands.Context, player_name: str):
|
|
import battlefield
|
|
|
|
await ctx.defer()
|
|
embed = battlefield.get_player(player=player_name.lower())
|
|
await ctx.send_followup(embed=embed)
|
|
|
|
|
|
def setup(bot):
|
|
bot.add_cog(Games(bot))
|