From e7e3bf9c1f01af12e524cc9926feebedb22d67f0 Mon Sep 17 00:00:00 2001 From: John Lancaster <32917998+jsl12@users.noreply.github.com> Date: Sun, 11 Jun 2023 10:47:35 -0500 Subject: [PATCH] added cli for handling the alive flag --- Dockerfile | 5 +++-- pyproject.toml | 2 +- src/kwaylon/__init__.py | 22 ++++++++++++++++------ src/kwaylon/kwaylon.py | 14 ++++++++++---- 4 files changed, 30 insertions(+), 13 deletions(-) diff --git a/Dockerfile b/Dockerfile index d603cf3..d62c52c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,13 +2,14 @@ FROM python:latest RUN apt update && apt install -y bash RUN python3 -m pip install --upgrade pip + +RUN mkdir -p /kwaylon/src +WORKDIR /kwaylon COPY ./requirements.txt ./requirements.txt RUN --mount=type=cache,mode=0755,target=/root/.cache/pip python3 -m pip install -r ./requirements.txt RUN python3 -m nltk.downloader words punkt averaged_perceptron_tagger -RUN mkdir -p /kwaylon/src COPY ./src /kwaylon/src COPY pyproject.toml /kwaylon -WORKDIR /kwaylon RUN python3 -m pip install -e /kwaylon diff --git a/pyproject.toml b/pyproject.toml index b0aae0a..29eb45a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,4 +20,4 @@ dependencies = [ requires-python = ">=3.9" [project.scripts] -kwaylon = "kwaylon:main" +kwaylon = "kwaylon:cli" diff --git a/src/kwaylon/__init__.py b/src/kwaylon/__init__.py index c17c536..3eb020c 100644 --- a/src/kwaylon/__init__.py +++ b/src/kwaylon/__init__.py @@ -2,6 +2,7 @@ import asyncio import logging import os +import click from dotenv import load_dotenv from rich.console import Console from rich.highlighter import NullHighlighter @@ -30,21 +31,30 @@ def init_logging(log_level: int = logging.INFO): datefmt=dt_fmt, handlers=[rich_handler] ) + logging.getLogger('discord').setLevel(logging.WARNING) + logging.getLogger('urllib3').setLevel(logging.INFO) -def main(token_var: str = 'DISCORD_TOKEN'): - init_logging(logging.DEBUG) - load_dotenv() +def main(token_var: str = 'DISCORD_TOKEN', alive_flag: bool = False): loop = asyncio.new_event_loop() loop.create_task( Kwaylon.create_and_start( os.getenv(token_var), - logging.DEBUG + logging.DEBUG, + alive_flag ) ) - logging.getLogger('discord').setLevel(logging.WARNING) - logging.getLogger('urllib3').setLevel(logging.INFO) try: loop.run_forever() except KeyboardInterrupt: pass + + +@click.command() +@click.option('-a', '--alive', required=False, default=False, is_flag=True) +def cli(alive: bool): + load_dotenv() + init_logging(logging.DEBUG) + logging.debug(f'Starting from [bold red]Kwaylon CLI[/]') + main(token_var='DISCORD_TOKEN', alive_flag=alive) + \ No newline at end of file diff --git a/src/kwaylon/kwaylon.py b/src/kwaylon/kwaylon.py index 463187b..18565dd 100644 --- a/src/kwaylon/kwaylon.py +++ b/src/kwaylon/kwaylon.py @@ -19,6 +19,8 @@ _log = logging.getLogger(__name__) class Kwaylon(Client): + im_alive_flag: bool + def __init__(self, limit: int = 5000, days: int = 30, db_path: Path = None, *args, **kwargs): super().__init__(*args, **kwargs) self.jokes = list(jokes.collect_jokes()) @@ -35,15 +37,19 @@ class Kwaylon(Client): self.robotics_facility: TextChannel = await self.fetch_channel(ROBOTICS_FACILITY_ID) self.robotics_facility_dev: TextChannel = await self.fetch_channel(DEV_ROBOTICS_FACILITY_ID) self.kaylon_emoji: Emoji = utils.get(self.emojis, name='kaylon') - # await alive(self.robotics_facility) - _log.info( - '[bold bright_green]Done[/][bright_black], laying in wait...[/]') + + if self.im_alive_flag: + # await alive(self.robotics_facility) + await alive(self.robotics_facility_dev) + + _log.info('[bold bright_green]Done[/][bright_black], laying in wait...[/]') @classmethod - async def create_and_start(cls, token: str, log_level: int = logging.INFO): + async def create_and_start(cls, token: str, log_level: int = logging.INFO, alive: bool = False): intents = Intents.default() intents.message_content = True client = cls(intents=intents) + client.im_alive_flag = alive @client.event async def on_ready():