commit 14d4ed5e4ad4441cc4b944b848cae6567fcc31ba Author: SowinskiBraeden Date: Sat Nov 16 20:48:24 2024 -0800 clear diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..9f146e4 --- /dev/null +++ b/.env.example @@ -0,0 +1,11 @@ +# Discord +DISCORD_TOKEN= +DISCORD_GUILD= +ADMIN_ROLE= +WEBHOOK= + +# SFTP +SFTP_HOST= +SFTP_PORT= +SFTP_USERNAME= +SFTP_PASSWORD= diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..30cc27a --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +# Pycache +/__pycache__/* +*/__pycache__/* + +# Environment variables +.env diff --git a/cogs/event.py b/cogs/event.py new file mode 100644 index 0000000..f313d19 --- /dev/null +++ b/cogs/event.py @@ -0,0 +1,33 @@ +from discord.ext import commands +from discord import app_commands +from discord import Interaction + +class Event(app_commands.Group): + def __init__(self, bot: commands.Bot, name: str, description: str): + super().__init__(name=name, description=description) + self.bot = bot + + @app_commands.command(name="start", description="Start an event leaderboard") + async def start(self, interaction: Interaction) -> None: + if self.bot._running: await interaction.response.send_message("Event already started") + self.bot.scrape_file.start() + self.bot._running = True + await interaction.response.send_message("Starting new event leaderboard...") + + @app_commands.command(name="stop", description="Stop an event leaderboard") + async def stop(self, interaction: Interaction) -> None: + if not self.bot._running: await interaction.response.send_message("Event already stopped") + self.bot.scrape_file.stop() + + # Reset trackers + self.bot._running = False + self.bot.log_file = "" + self.bot.log_index = -1 + self.bot.players = [] + self.bot.gamertags = [] + self.bot.message_id = "" + + await interaction.response.send_message("Stopping event leaderboard...") + +async def setup(bot: commands.Bot) -> None: + bot.tree.add_command(Event(bot, name="event", description="start or stop an event leaderboard")) diff --git a/config.py b/config.py new file mode 100644 index 0000000..4dec1bb --- /dev/null +++ b/config.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +import os +from dotenv import load_dotenv + +load_dotenv() + +class Config: + TOKEN: str = os.getenv("DISCORD_TOKEN") + GUILD: str = os.getenv("DISCORD_GUILD") + ADMIN: str = os.getenv("ADMIN_ROLE") + WEBOOK: str = os.getenv("WEBHOOK") + + # MONGO_URI: str = os.getenv("MONGO_URI") + # MONGO_DBO: str = os.getenv("MONGO_DBO") + + SFTP_HOST: str = os.getenv("SFTP_HOST") + SFTP_PORT: int = int(os.getenv("SFTP_PORT")) + SFTP_USERNAME: str = os.getenv("SFTP_USERNAME") + SFTP_PASSWORD: str = os.getenv("SFTP_PASSWORD") \ No newline at end of file diff --git a/handlers/logs.py b/handlers/logs.py new file mode 100644 index 0000000..36cb37c --- /dev/null +++ b/handlers/logs.py @@ -0,0 +1,122 @@ +#!/usr/bin/env python +from re import match +from paramiko import SFTPClient +from datetime import datetime +from typing import Tuple + +# Regex templates +class Templates: + Gamertag: str = r'(?P