JobSpy/src/telegram_handler/button_callback/button_fire_strategy.py

31 lines
1.1 KiB
Python

from telegram import MaybeInaccessibleMessage
from telegram.constants import ReactionEmoji
from scrapers import create_logger
from model.job_repository import job_repository
from telegram_bot import TelegramBot
from telegram_handler.button_callback.button_strategy import ButtonStrategy
class FireStrategy(ButtonStrategy):
def __init__(self, message: MaybeInaccessibleMessage, job_id: str) -> None:
"""
Usually, the Context accepts a strategy through the constructor, but
also provides a setter to change it at runtime.
"""
self._message = message
self._emoji = ReactionEmoji.FIRE
self._telegram_bot = TelegramBot()
self._job_id = job_id
self._logger = create_logger("FireStrategy")
async def execute(self):
job = job_repository.find_by_id(self._job_id)
if not job:
self._logger.error(f"Job with ID {self._job_id} not found.")
return
job.applied = True
job_repository.update(job)
chat_id = self._message.chat.id
await self._telegram_bot.set_message_reaction(chat_id, self._message.message_id, self._emoji)