diff --git a/.gitignore b/.gitignore index 1d44d03..ca8d510 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .env .idea __pycache__ +error_*.txt \ No newline at end of file diff --git a/discord_bot/__main__.py b/discord_bot/__main__.py index 76e3488..d5ce27b 100644 --- a/discord_bot/__main__.py +++ b/discord_bot/__main__.py @@ -4,25 +4,30 @@ import logging import discord import re import tempfile +import sys from datetime import datetime from dotenv import load_dotenv from meme_otron import img_factory as imgf from meme_otron import meme_db as db from meme_otron import utils -from meme_otron import main +from meme_otron import meme_otron VERSION = "1.0-dev" t0 = datetime.now() logging.basicConfig(format="[%(asctime)s][%(levelname)s][%(module)s] %(message)s", level=logging.INFO) -imgf.load_fonts() -db.load_memes() - # Loading token load_dotenv() token = os.getenv('DISCORD_TOKEN') +if token is None: + logging.error("No token was loaded, please verify your .env file") + sys.exit(1) + +imgf.load_fonts() +db.load_memes() + client = discord.Client() @@ -80,13 +85,13 @@ async def on_message(message): left_wmark_text = None if not direct and len(args) > 1: f"By {message.author.display_name}" - img = main.compute(*args, left_wmark_text=left_wmark_text) + img = meme_otron.compute(*args, left_wmark_text=left_wmark_text) if img is None: await message.channel.send(f"Template `{args[0]}` not found\n" f"You can find a more detailed help and a list of templates at:\n" f"") return - with tempfile.NamedTemporaryFile() as output: + with tempfile.NamedTemporaryFile(delete=False) as output: img.save(output, format="JPEG") response = None if len(args) == 1: @@ -95,6 +100,10 @@ async def on_message(message): response = f"A meme by {message.author.mention}:" await message.channel.send(response, file=discord.File(filename="meme.jpg", fp=output.name)) + try: + os.remove(output.name) + except PermissionError: + pass if not direct: try: await message.delete() diff --git a/meme_otron/__main__.py b/meme_otron/__main__.py new file mode 100644 index 0000000..afba036 --- /dev/null +++ b/meme_otron/__main__.py @@ -0,0 +1,17 @@ +import logging +import sys +import os + +from . import img_factory as imgf +from . import meme_db as db +from . import meme_otron + +if __name__ == "__main__": + db.load_memes() + imgf.load_fonts() + if len(sys.argv) <= 1 or sys.argv[1].lower().strip() == "help": + print("python -m meme_otron (meme_id) \"[text 1]\" \"[text 2]\" ... > file.jpg", file=sys.stderr) + else: + img = meme_otron.compute(*sys.argv[1:]) + with os.fdopen(os.dup(sys.stdout.fileno())) as output: + img.save(output, format="jpeg") diff --git a/meme_otron/main.py b/meme_otron/meme_otron.py similarity index 76% rename from meme_otron/main.py rename to meme_otron/meme_otron.py index f201bbf..1649ced 100644 --- a/meme_otron/main.py +++ b/meme_otron/meme_otron.py @@ -1,6 +1,4 @@ import logging -import sys -import os from .types import Text, Pos from . import img_factory as imgf @@ -34,7 +32,6 @@ def compute(*args, left_wmark_text=None, debug=False): :return: """ if len(args) < 1: - logger.warning("python3 meme_otron.py (meme_id) \"[text 1]\" \"[text 2]\" ... > file.jpg") return None meme_id = args[0] meme = db.get_meme(meme_id) @@ -52,12 +49,3 @@ def compute(*args, left_wmark_text=None, debug=False): left_wmark.text = left_wmark_text meme.texts += [left_wmark] return imgf.make(meme.template, meme.texts, debug=debug) - - -if __name__ == "__main__": - logging.basicConfig(format="[%(asctime)s][%(levelname)s][%(module)s] %(message)s", level=logging.DEBUG) - db.load_memes() - imgf.load_fonts() - img = compute(*sys.argv[1:]) - with os.fdopen(os.dup(sys.stdout.fileno())) as output: - img.save(output, format="jpeg")