2021-10-08 15:25:47 +02:00
|
|
|
from telegram.ext.callbackcontext import CallbackContext
|
|
|
|
from telegram.ext.commandhandler import CommandHandler
|
|
|
|
from telegram.update import Update
|
|
|
|
|
2021-10-06 19:44:03 +02:00
|
|
|
from bot.handler.abstractHandler import AbstractHandler
|
|
|
|
from bot.message.messageData import MessageData
|
2021-10-08 15:25:47 +02:00
|
|
|
from bot.message.replier import Replier
|
2021-10-06 19:44:03 +02:00
|
|
|
from config.contents import joined, not_joined
|
|
|
|
from exception.notFoundException import NotFoundException
|
|
|
|
from logger import Logger
|
|
|
|
from repository.userRepository import UserRepository
|
|
|
|
|
|
|
|
|
|
|
|
class JoinHandler(AbstractHandler):
|
|
|
|
bot_handler: CommandHandler
|
|
|
|
user_repository: UserRepository
|
2021-10-08 15:25:47 +02:00
|
|
|
action: str = 'join'
|
2021-10-06 19:44:03 +02:00
|
|
|
|
|
|
|
def __init__(self) -> None:
|
2021-10-08 15:25:47 +02:00
|
|
|
self.bot_handler = CommandHandler(self.action, self.handle)
|
2021-10-06 19:44:03 +02:00
|
|
|
self.user_repository = UserRepository()
|
|
|
|
|
|
|
|
def handle(self, update: Update, context: CallbackContext) -> None:
|
|
|
|
try:
|
|
|
|
message_data = MessageData.create_from_arguments(update, context)
|
2021-10-08 15:25:47 +02:00
|
|
|
except Exception as e:
|
|
|
|
return Replier.markdown(update, str(e))
|
2021-10-06 19:44:03 +02:00
|
|
|
|
|
|
|
try:
|
|
|
|
user = self.user_repository.get_by_id(message_data.user_id)
|
|
|
|
|
|
|
|
if user.is_in_chat(message_data.chat_id):
|
2021-10-08 15:25:47 +02:00
|
|
|
return Replier.markdown(update, Replier.interpolate(not_joined, message_data))
|
2021-10-06 19:44:03 +02:00
|
|
|
|
|
|
|
user.add_to_chat(message_data.chat_id)
|
|
|
|
self.user_repository.save(user)
|
|
|
|
except NotFoundException:
|
|
|
|
self.user_repository.save_by_message_data(message_data)
|
|
|
|
|
2021-10-08 15:25:47 +02:00
|
|
|
Replier.markdown(update, Replier.interpolate(joined, message_data))
|
|
|
|
Logger.action(message_data, self.action)
|