mirror of https://github.com/Bunsly/JobSpy
Added reaction to command and messages for start and finish
parent
d563ab81ed
commit
9c18c2e936
|
@ -11,6 +11,10 @@ load_dotenv()
|
|||
|
||||
|
||||
class JobRepository:
|
||||
def __new__(cls):
|
||||
if not hasattr(cls, 'instance'):
|
||||
cls.instance = super(JobRepository, cls).__new__(cls)
|
||||
return cls.instance
|
||||
|
||||
def __init__(self, database_name: str = None):
|
||||
self.logger = create_logger("JobRepository")
|
||||
|
|
|
@ -12,6 +12,10 @@ logger = create_logger("TelegramBot")
|
|||
|
||||
|
||||
class TelegramBot:
|
||||
def __new__(cls):
|
||||
if not hasattr(cls, 'instance'):
|
||||
cls.instance = super(TelegramBot, cls).__new__(cls)
|
||||
return cls.instance
|
||||
|
||||
def __init__(self):
|
||||
self._api_token = os.getenv("TELEGRAM_API_TOKEN")
|
||||
|
@ -35,10 +39,10 @@ class TelegramBot:
|
|||
Send JobPost details to Telegram chat.
|
||||
"""
|
||||
message = f"Job ID: {job.id}\n" \
|
||||
f"Job Title: {job.title}\n" \
|
||||
f"Company: {job.company_name}\n" \
|
||||
f"Location: {job.location.display_location()}\n" \
|
||||
f"Link: {job.job_url}\n"
|
||||
f"Job Title: {job.title}\n" \
|
||||
f"Company: {job.company_name}\n" \
|
||||
f"Location: {job.location.display_location()}\n" \
|
||||
f"Link: {job.job_url}\n"
|
||||
reply_markup = self.get_reply_markup()
|
||||
|
||||
try:
|
||||
|
@ -48,6 +52,17 @@ class TelegramBot:
|
|||
logger.error(f"Failed to send job to Telegram: {job.id}")
|
||||
logger.error(f"Error: {e}")
|
||||
|
||||
async def send_text(self, message: str):
|
||||
"""
|
||||
Send Text han Message to Telegram chat.
|
||||
"""
|
||||
try:
|
||||
await self.bot.sendMessage(chat_id=self.chatId, text=message)
|
||||
logger.info("Sent text message to Telegram")
|
||||
except Exception as e:
|
||||
logger.error("Failed to send text message to Telegram")
|
||||
logger.error(f"Error: {e}")
|
||||
|
||||
async def send_test_message(self):
|
||||
"""
|
||||
Send Test Message to Telegram chat.
|
||||
|
@ -58,7 +73,7 @@ class TelegramBot:
|
|||
await self.bot.sendMessage(chat_id=self.chatId, text=message, reply_markup=reply_markup)
|
||||
logger.info("Sent test message to Telegram")
|
||||
except Exception as e:
|
||||
logger.error("Failed o send test message to Telegram")
|
||||
logger.error("Failed to send test message to Telegram")
|
||||
logger.error(f"Error: {e}")
|
||||
|
||||
async def set_message_reaction(self, message_id: int, emoji_reaction: ReactionEmoji):
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
from telegram import Update
|
||||
from telegram.constants import ReactionEmoji
|
||||
from telegram.ext import (
|
||||
ContextTypes,
|
||||
)
|
||||
|
@ -26,6 +27,10 @@ class TelegramDefaultHandler(TelegramHandler):
|
|||
|
||||
async def handle(self, update: Update, context: ContextTypes.DEFAULT_TYPE):
|
||||
self.logger.info("start handling")
|
||||
await self.telegram_bot.send_text(
|
||||
f"Start scarping: {self.sites_to_scrap[0].name}")
|
||||
await self.telegram_bot.set_message_reaction(
|
||||
update.message.message_id, ReactionEmoji.FIRE)
|
||||
jobs = scrape_jobs(
|
||||
site_name=self.sites_to_scrap,
|
||||
search_term=self.search_term,
|
||||
|
@ -38,4 +43,6 @@ class TelegramDefaultHandler(TelegramHandler):
|
|||
new_jobs = self.jobRepository.insertManyIfNotFound(jobs)
|
||||
for newJob in new_jobs:
|
||||
await self.telegram_bot.send_job(newJob)
|
||||
await self.telegram_bot.send_text(
|
||||
f"Finished scarping: {self.sites_to_scrap[0].name}")
|
||||
self.logger.info("finished handling")
|
||||
|
|
Loading…
Reference in New Issue