From aba580a1dfa88d9467794679d1dcf7cc793bbeda Mon Sep 17 00:00:00 2001 From: roli2py Date: Sat, 15 Aug 2026 17:03:54 +0300 Subject: [PATCH] Place run of bot in the "name == main" condition Place the run to mitigate the problems when the tools are invoking the main module to inspect dependencies or get a `version` variable. --- main.py | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/main.py b/main.py index 214fe85..ffd4328 100644 --- a/main.py +++ b/main.py @@ -48,24 +48,24 @@ async def xkcd_comic(interaction: discord.Interaction, n: int): return await interaction.response.defer() - + url = f"https://xkcd.com/{n}/info.0.json" try: req = urllib.request.Request(url, headers={"User-Agent": "DiscordBot/1.0"}) with urllib.request.urlopen(req) as response: data = json.loads(response.read().decode()) - + title = data.get("title", "Unknown Title") img_url = data.get("img", "") alt_text = data.get("alt", "No alt text available.") - + output = ( f"*** XKCD Comic #{n}: {title} ***\n" f"Alt Text: {alt_text}\n" f"{img_url}" ) await interaction.followup.send(output) - + except urllib.error.HTTPError as e: if e.code == 404: await interaction.followup.send(f"Comic #{n} could not be found.") @@ -73,21 +73,21 @@ async def xkcd_comic(interaction: discord.Interaction, n: int): await interaction.followup.send(f"Failed to fetch comic data (HTTP Status {e.code}).") except Exception as e: await interaction.followup.send(f"An unexpected internal error occurred: {e}") - + def get_pypi_package_details(package_name): url = f"https://pypi.org/pypi/{package_name}/json" - + try: response = requests.get(url) - + if response.status_code == 404: return f"Error: Package '{package_name}' not found on PyPI." - + response.raise_for_status() data = response.json() - + info = data.get("info", {}) - + return ( info.get("name"), info.get("version"), @@ -99,10 +99,10 @@ def get_pypi_package_details(package_name): info.get("requires_dist") or [], list(data.get("releases", {}).keys()) ) - + except requests.exceptions.RequestException as e: return f"An error occurred while connecting to PyPI: {e}" - + @bot.tree.command(name="pypi", description="Displays a PyPI package by it's name.") @app_commands.describe(name="The pypi package name") async def pypi_package(interaction: discord.Interaction, name: str): @@ -111,26 +111,28 @@ async def pypi_package(interaction: discord.Interaction, name: str): return await interaction.response.defer() - + package_details = get_pypi_package_details(name) - + if isinstance(package_details, str): await interaction.followup.send(package_details) - + name, version, summary, author, _license, home_page, project_url, requires_dist, releases = package_details - + output = ( f"*** {name} v{version} by {author}***\n" f"{summary}\n" f"{len(releases)} total releases\n" f"{project_url}" ) - + await interaction.followup.send(output) -load_dotenv() -BOT_TOKEN = os.getenv("DISCORD_API") -if not BOT_TOKEN: - raise ValueError("The environmental variable DISCORD_API is empty. Please replace it with the bot token.") -bot.run(BOT_TOKEN) \ No newline at end of file +if __name__ == "__main__": + load_dotenv() + + BOT_TOKEN = os.getenv("DISCORD_API") + if not BOT_TOKEN: + raise ValueError("The environmental variable DISCORD_API is empty. Please replace it with the bot token.") + bot.run(BOT_TOKEN)