Пример #1
0
    def execute(self):
        sender = self.msg.sender
        messenger_from = Messenger.get_instance(sender.messenger)

        if len(self.msg.cmd.args) < 2:
            messenger_from.send(
                sender.id,
                Message('MESSAGE.WRONG_ARGS').localize(sender.lang),
                keyboards.ConnectKeyboard(sender)
            )
            return

        messenger, id_ = self.msg.cmd.args

        receiver = Storage().find_user(messenger, id_)

        if receiver is None:
            messenger_from.send(
                sender.id,
                Message('MESSAGE.INVALID_USER').localize(sender.lang),
                keyboards.ConnectKeyboard(sender)
            )
            return

        Storage().update(sender.key, {'receiver': receiver.key})
        messenger_to = Messenger.get_instance(receiver.messenger)

        if receiver.receiver == sender.key:
            message_to_sender = Message('MESSAGE.CONNECTED').localize(sender.lang, name=receiver.name)
            message_to_receiver = Message('MESSAGE.CONNECTED').localize(receiver.lang, name=sender.name)
        else:
            message_to_sender = Message('MESSAGE.CONN_WAIT').localize(
                sender.lang,
                name=receiver.name,
                messenger=receiver.messenger
            )
            message_to_receiver = Message('MESSAGE.CONN_NOTIFICATION').localize(
                receiver.lang,
                name=sender.name,
                messenger=sender.messenger,
                id=sender.nick or sender.phone or sender.id
             )

        messenger_from.send(
            sender.id,
            message_to_sender,
            keyboards.ConnectKeyboard(sender)
        )
        messenger_to.send(
            receiver.id,
            message_to_receiver,
            keyboards.ConnectKeyboard(receiver)
        )
Пример #2
0
    def execute(self):
        sender = self.msg.sender
        messenger = Messenger.get_instance(sender.messenger)

        if len(self.msg.cmd.args) == 0:
            messenger.send(sender.id,
                           Message('MESSAGE.WRONG_ARGS').localize(sender.lang),
                           keyboards.ConnectKeyboard(sender))
            return

        sender.lang = self.msg.cmd.args[0]
        Storage().update(sender.key, {'lang': sender.lang})
        messenger.send(sender.id,
                       Message('MESSAGE.LANG_CHANGED').localize(sender.lang),
                       keyboards.ConnectKeyboard(sender))
Пример #3
0
 def execute(self):
     sender = self.msg.sender
     messenger_from = Messenger.get_instance(sender.messenger)
     if sender.receiver is not None:
         receiver = Storage().get_user(sender.receiver)
         Storage().update(sender.key, {'receiver': None})
         Storage().update(receiver.key, {'receiver': None})
         messenger_to = Messenger.get_instance(receiver.messenger)
         messenger_to.send(
             receiver.id,
             Message('MESSAGE.FRIEND_OFF').localize(receiver.lang),
             keyboards.ConnectKeyboard(receiver))
         messenger_from.send(sender.id,
                             Message('MESSAGE.OFF').localize(sender.lang),
                             keyboards.ConnectKeyboard(sender))
     else:
         messenger_from.send(
             sender.id,
             Message('MESSAGE.OFF_BLANK').localize(sender.lang),
             keyboards.ConnectKeyboard(sender))
Пример #4
0
    def execute(self):
        sender = self.msg.sender
        messenger = Messenger.get_instance(sender.messenger)

        if len(self.msg.cmd.args) == 0:
            messenger.send(sender.id,
                           Message('MESSAGE.WRONG_ARGS').localize(sender.lang),
                           keyboards.ConnectKeyboard(sender))
            return

        keyboard = self.msg.cmd.args[0]

        try:
            messenger.send(
                sender.id,
                Message(f'KEYBOARD.{keyboard.upper()}').localize(sender.lang),
                getattr(keyboards, f'{keyboard.capitalize()}Keyboard')(sender))
        except KeyError:
            messenger.send(sender.id,
                           Message('MESSAGE.WRONG_ARGS').localize(sender.lang),
                           keyboards.ConnectKeyboard(sender))
Пример #5
0
def main(messenger):
    messenger_from = Messenger.get_instance(messenger)

    if messenger_from is None:
        abort(404)
        return

    logger.info('Parsing the message')

    msg: Optional[Message] = messenger_from.parse(request.json)

    if msg is None:
        logger.info('Not new message')
        return 'ok'

    logger.info('Message was parsed successfully')

    if not msg.sender.registered:
        logger.info('Registering user')
        msg.sender.key = Storage().add_user(msg.sender)
        logger.info('Sending welcome message')
        messenger_from.send(
            msg.sender.id,
            Message('MESSAGE.REGISTER').localize(msg.sender.lang),
            keyboards.ConnectKeyboard(msg.sender)
        )

        if msg.cmd is None:
            return 'ok'

    if msg.cmd is not None:
        logger.info('Command detected')
        cmd_class = commands.get_class(msg.cmd.name)
        logger.info('Executing command')
        cmd_class(msg).execute()
        return 'ok'

    if msg.sender.receiver is None:
        logger.info('No receiver')
        messenger_from.send(
            msg.sender.id,
            Message('MESSAGE.NO_RECIPIENT').localize(msg.sender.lang),
            keyboards.ConnectKeyboard(msg.sender)
        )
        return 'ok'

    logger.info('Getting receiver')
    receiver = Storage().get_user(msg.sender.receiver)
    if receiver.receiver != msg.sender.key:
        logger.info('Receiver does not confirm the connection')
        messenger_from.send(
            msg.sender.id,
            Message('MESSAGE.CONN_WAIT').localize(msg.sender.lang,
                                                  name=receiver.name,
                                                  messenger=receiver.messenger),
            keyboards.ConnectKeyboard(msg.sender)
        )
        return 'ok'

    logger.info('Getting receiver messenger instance')
    messenger_to = Messenger.get_instance(receiver.messenger)
    logger.info('Forwarding')
    messenger_to.send(
        receiver.id,
        Message('MESSAGE.TEMPLATE', msg.attachments).localize('', name=msg.sender.name, msg=msg.text),
        keyboards.ConnectKeyboard(receiver)
    )

    return 'ok'
Пример #6
0
 def execute(self):
     sender = self.msg.sender
     messenger = Messenger.get_instance(sender.messenger)
     messenger.send(sender.id,
                    Message('MESSAGE.FULL_HELP').localize(sender.lang),
                    keyboards.ConnectKeyboard(sender))