47 lines
1.3 KiB
Python
Executable File
47 lines
1.3 KiB
Python
Executable File
from discord.ext import commands
|
|
import discord
|
|
import requests
|
|
from bs4 import BeautifulSoup
|
|
|
|
|
|
class TrackDays(commands.Cog):
|
|
def __init__(self, bot):
|
|
self.bot: commands.Bot = bot
|
|
|
|
async def get_all_tracks(ctx: discord.AutocompleteContext):
|
|
"""
|
|
returns a list of all the cali tracks for use in auto-complete
|
|
"""
|
|
url = "https://www.trackpinata.com/"
|
|
|
|
response = requests.get(url).text
|
|
soup = BeautifulSoup(response, "html.parser")
|
|
|
|
return [x.text for x in soup.find_all("h2", class_="thumbnail-header")]
|
|
|
|
@commands.slash_command(
|
|
guild_ids=None,
|
|
name="trackdays",
|
|
description="Look up upcoming trackdays",
|
|
)
|
|
async def trackdays_lookup(
|
|
self,
|
|
ctx: commands.Context,
|
|
track: discord.Option(
|
|
str,
|
|
autocomplete=discord.utils.basic_autocomplete(get_all_tracks),
|
|
description="Track to look up days for",
|
|
),
|
|
):
|
|
track = track.replace(" ", "-").lower()
|
|
base_url = f"https://www.trackpinata.com/tracks/{track}"
|
|
|
|
response = requests.get(base_url)
|
|
soup = BeautifulSoup(response.text, "html.parser")
|
|
|
|
soup.find_all("a", class_="list-item w-inline-block")
|
|
|
|
|
|
def setup(bot):
|
|
bot.add_cog(TrackDays(bot))
|