diff --git a/labeler/adapter/telegram_bot.py b/labeler/adapter/telegram_bot.py new file mode 100644 index 0000000..a3f8739 --- /dev/null +++ b/labeler/adapter/telegram_bot.py @@ -0,0 +1,26 @@ +import os + +from telegram.ext import CommandHandler, ApplicationBuilder + +from labeler.app.labeler import Application +from labeler.infra.e550w_printer.printer import E550W +from labeler.infra.renderer import PILRenderer + + +class LabelingBot: + def __init__(self, app): + self.app = app + + async def media_info(self, update, context): + media = self.app.get_installed_media() + await update.message.reply_text(f"Installed media: {media.description}") + + +if __name__ == "__main__": + application = Application(PILRenderer(), E550W(os.environ.get("PRINTER_IP"))) + bot = LabelingBot(application) + + app = ApplicationBuilder().token(os.environ["TELEGRAM_TOKEN"]).build() + app.add_handler(CommandHandler("media_info", bot.media_info)) + + app.run_polling() diff --git a/labeler/app/labeler.py b/labeler/app/labeler.py index a4ecc72..9dea496 100644 --- a/labeler/app/labeler.py +++ b/labeler/app/labeler.py @@ -1,4 +1,4 @@ -from labeler.domain.objects import Label, LabelRequest, LabelDefinition +from labeler.domain.objects import Label, LabelRequest, LabelDefinition, MediaDefinition from labeler.interfaces import Renderer, Printer @@ -23,3 +23,6 @@ class Application: ) self.renderer.render_label(label_definition) + + def get_installed_media(self) -> MediaDefinition: + return self.printer.get_installed_media() diff --git a/labeler/infra/e550w_printer/printer.py b/labeler/infra/e550w_printer/printer.py index 62850da..a7be38b 100644 --- a/labeler/infra/e550w_printer/printer.py +++ b/labeler/infra/e550w_printer/printer.py @@ -24,7 +24,7 @@ class E550W(Printer): self.snmp_port = 161 def get_installed_media(self) -> MediaDefinition: - pass + return self.__get_printer_status() def __get_printer_status(self): raw_snmp_data = self.__get_snmp_status().asNumbers()