mirror of
https://github.com/miloszowi/everyone-mention-telegram-bot.git
synced 2025-10-25 08:25:48 +00:00
0.1.0 Version : changed in to join and out to leave, folder structure and naming changes
This commit is contained in:
46
src/bot/handler/joinHandler.py
Executable file
46
src/bot/handler/joinHandler.py
Executable file
@@ -0,0 +1,46 @@
|
||||
from telegram.utils.helpers import mention_markdown
|
||||
from bot.handler.abstractHandler import AbstractHandler
|
||||
from bot.message.messageData import MessageData
|
||||
from config.contents import joined, not_joined
|
||||
from exception.invalidArgumentException import InvalidArgumentException
|
||||
from exception.notFoundException import NotFoundException
|
||||
from logger import Logger
|
||||
from repository.userRepository import UserRepository
|
||||
from telegram.ext.callbackcontext import CallbackContext
|
||||
from telegram.ext.commandhandler import CommandHandler
|
||||
from telegram.update import Update
|
||||
|
||||
|
||||
class JoinHandler(AbstractHandler):
|
||||
bot_handler: CommandHandler
|
||||
user_repository: UserRepository
|
||||
|
||||
def __init__(self) -> None:
|
||||
self.bot_handler = CommandHandler('join', self.handle)
|
||||
self.user_repository = UserRepository()
|
||||
|
||||
def handle(self, update: Update, context: CallbackContext) -> None:
|
||||
try:
|
||||
message_data = MessageData.create_from_arguments(update, context)
|
||||
except InvalidArgumentException as e:
|
||||
return self.reply_markdown(update, str(e))
|
||||
|
||||
try:
|
||||
user = self.user_repository.get_by_id(message_data.user_id)
|
||||
|
||||
if user.is_in_chat(message_data.chat_id):
|
||||
return self.reply_markdown(update, self.interpolate_reply(not_joined, message_data))
|
||||
|
||||
user.add_to_chat(message_data.chat_id)
|
||||
self.user_repository.save(user)
|
||||
except NotFoundException:
|
||||
self.user_repository.save_by_message_data(message_data)
|
||||
|
||||
self.reply_markdown(update, self.interpolate_reply(joined, message_data))
|
||||
self.log_action(message_data)
|
||||
|
||||
def get_bot_handler(self) -> CommandHandler:
|
||||
return self.bot_handler
|
||||
|
||||
def log_action(self, message_data: MessageData) -> None:
|
||||
Logger.info(f'User {message_data.username} joined {message_data.chat_id}')
|
||||
Reference in New Issue
Block a user