From 1f8f49fca2b5d818c71cb286605c3bf83ac06de0 Mon Sep 17 00:00:00 2001 From: Yariv Menachem Date: Sun, 5 Jan 2025 12:56:46 +0200 Subject: [PATCH] updated the messages --- .../start_handler_constats.py | 29 +++++++++++ .../telegram_start_handler.py | 50 +++++++------------ 2 files changed, 47 insertions(+), 32 deletions(-) create mode 100644 src/telegram_handler/start_handler_constats.py diff --git a/src/telegram_handler/start_handler_constats.py b/src/telegram_handler/start_handler_constats.py new file mode 100644 index 0000000..a3d2496 --- /dev/null +++ b/src/telegram_handler/start_handler_constats.py @@ -0,0 +1,29 @@ +START_MESSAGE: str = "Hi there! I'm Professor Bot, your friendly job search assistant.😊\n" \ + "I'm here to help you find the perfect position." \ + "To stop chatting with me at any time, just send '/cancel'.\n\n" + +POSITION_MESSAGE: str = "What kind of position are you looking for? ✨\n" \ + "(e.g., Software Engineer, Data Scientist, Marketing Manager)" + +POSITION_NOT_FOUND: str = "I couldn't find any positions matching your request. 😕\n" \ + "Please try again" +LOCATION_MESSAGE: str = "Where are you hoping to find a position? 🌎\n" \ + "(e.g., Rishon Lezion, New York City, San Francisco)" \ + "You can enter multiple tags separated by commas. 🔍" +EXPERIENCE_MESSAGE: str = "How many years of professional experience do you have in this field? 💼\n" +FILTER_TILE_MESSAGE: str = "To help me narrow down your search, tell me about any relevant tags or keywords.\n" \ + "For example: 'remote', 'entry-level', 'python', 'machine learning', 'QA'.\n" \ + "You can enter multiple tags separated by commas. 🔍" +THANK_YOU_MESSAGE: str = "Thank you for chatting with Professor Bot!\n\n" \ + "I can help you find jobs on LinkedIn, Glassdoor, and more." \ + "To search for jobs on a specific site, simply send the site name:\n" \ + "/linkedin\n" \ + "/glassdoor\n" \ + "/google\n" \ + "Or, use the command /find to search across all supported job boards for a broader search.\n" \ + "Let me know how I can assist you further! 😊" + +BYE_MESSAGE: str = "Have a great day!✨\n" \ + "I hope to assist you with your job search in the future.😊" + +VERIFY_MESSAGE:str = "Did you choose: %s ? 🧐" diff --git a/src/telegram_handler/telegram_start_handler.py b/src/telegram_handler/telegram_start_handler.py index 8ab6b8c..e543a9f 100644 --- a/src/telegram_handler/telegram_start_handler.py +++ b/src/telegram_handler/telegram_start_handler.py @@ -10,6 +10,8 @@ from db.position_repository import position_repository from db.user_repository import UserRepository from jobspy.scrapers.utils import create_logger from telegram_bot import TelegramBot +from telegram_handler.start_handler_constats import START_MESSAGE, POSITION_MESSAGE, POSITION_NOT_FOUND, \ + LOCATION_MESSAGE, EXPERIENCE_MESSAGE, FILTER_TILE_MESSAGE, THANK_YOU_MESSAGE, BYE_MESSAGE, VERIFY_MESSAGE from telegram_handler.telegram_handler import TelegramHandler @@ -44,9 +46,7 @@ class TelegramStartHandler(TelegramHandler): reply_markup = ReplyKeyboardMarkup(buttons, one_time_keyboard=True, input_field_placeholder=Flow.POSITION.name) await update.message.reply_text( - "Hi! My name is Professor Bot. I will hold a conversation with you. " - "Send /cancel to stop talking to me.\n\n" - "What Position are you looking for?", + START_MESSAGE + POSITION_MESSAGE, reply_markup=reply_markup, ) @@ -58,48 +58,40 @@ class TelegramStartHandler(TelegramHandler): self.logger.info("Position of %s: %s", user.first_name, update.message.text) position = next((p for p in self.positions if p.name == update.message.text), None) if not position: - await update.message.reply_text("Position not found") + await update.message.reply_text(POSITION_NOT_FOUND) buttons = [[KeyboardButton(position.name)] for position in self.positions] reply_markup = ReplyKeyboardMarkup(buttons, one_time_keyboard=True, input_field_placeholder=Flow.POSITION.name) await update.message.reply_text( - "What Position are you looking for?", + POSITION_MESSAGE, reply_markup=reply_markup, ) return Flow.POSITION.value - await update.message.reply_text( - "Gorgeous! Now, send me cites you want to search for\n" - "Example: Rishon Lezion,Petah Tikva,..." - ) + await update.message.reply_text(LOCATION_MESSAGE) return Flow.ADDRESS.value - async def address(self, update: Update, context: ContextTypes.DEFAULT_TYPE) -> int: + async def address(self, update: Update) -> int: """Stores the photo and asks for a location.""" user = update.message.from_user self.cities = update.message.text.split(",") reply_markup = ReplyKeyboardMarkup([[KeyboardButton("Yes"), KeyboardButton("No")]], one_time_keyboard=True, input_field_placeholder=Flow.VERIFY_ADDRESS.name) - await update.message.reply_text(f"Did you choose: {self.cities} ?", reply_markup=reply_markup) + await update.message.reply_text(VERIFY_MESSAGE % self.filters, reply_markup=reply_markup) return Flow.VERIFY_ADDRESS.value async def verify_address(self, update: Update, context: ContextTypes.DEFAULT_TYPE) -> int: if update.message.text == "No": - await update.message.reply_text( - "Please send the cities\n" - "Example: Rishon Lezion,Petah Tikva,..." - ) + await update.message.reply_text(LOCATION_MESSAGE) return Flow.ADDRESS.value reply_markup = ReplyKeyboardMarkup([["1", "2"]], one_time_keyboard=True, input_field_placeholder=Flow.VERIFY_ADDRESS.name) - await update.message.reply_text( - "Maybe I can visit you sometime!\n" - "Tell Your experience", - reply_markup=reply_markup - ) + await update.message.reply_text(EXPERIENCE_MESSAGE, + reply_markup=reply_markup + ) return Flow.EXPERIENCE.value @@ -109,10 +101,7 @@ class TelegramStartHandler(TelegramHandler): self.logger.info("Experience of %s: %s", user.first_name, update.message.text) await update.message.reply_text( - "Gorgeous!\n" - "Now, send me keywords to filter out positions based on title\n" - "Example: Data,QA,..." - ) + FILTER_TILE_MESSAGE) return Flow.FILTERS.value async def filters_flow(self, update: Update, context: ContextTypes.DEFAULT_TYPE) -> int: @@ -120,19 +109,16 @@ class TelegramStartHandler(TelegramHandler): self.filters = update.message.text.split(",") reply_markup = ReplyKeyboardMarkup([[KeyboardButton("Yes"), KeyboardButton("No")]], one_time_keyboard=True, input_field_placeholder=Flow.VERIFY_FILTERS.name) - await update.message.reply_text(f"Did you choose: {self.filters} ?", reply_markup=reply_markup) + await update.message.reply_text(VERIFY_MESSAGE % self.filters, reply_markup=reply_markup) return Flow.VERIFY_FILTERS.value async def verify_filter(self, update: Update, context: ContextTypes.DEFAULT_TYPE) -> int: if update.message.text == "No": - await update.message.reply_text( - "Please send the filters\n" - "Example: QA ,DATA,..." - ) + await update.message.reply_text(FILTER_TILE_MESSAGE) return Flow.FILTERS.value - await update.message.reply_text("Thank you! I hope we can talk again some day.") + await update.message.reply_text(THANK_YOU_MESSAGE) return ConversationHandler.END @@ -140,7 +126,7 @@ class TelegramStartHandler(TelegramHandler): """Skips the location and asks for info about the user.""" user = update.message.from_user self.logger.info("User %s did not send a filters.", user.first_name) - await update.message.reply_text("Thank you! I hope we can talk again some day.") + await update.message.reply_text(THANK_YOU_MESSAGE) return ConversationHandler.END @@ -149,7 +135,7 @@ class TelegramStartHandler(TelegramHandler): user = update.message.from_user self.logger.info("User %s canceled the conversation.", user.first_name) await update.message.reply_text( - "Bye! I hope we can talk again some day.", reply_markup=ReplyKeyboardRemove() + BYE_MESSAGE, reply_markup=ReplyKeyboardRemove() ) return ConversationHandler.END