Ejemplo n.º 1
0
 def update(self, proto, msg=None, *args, **kwargs):
     if isinstance(msg, Message) and msg.is_valid():
         sender = getattr(msg, settings.SENDER, None)
         mes_ecrypted = base64.b64decode(str(msg))
         decrypted_message = proto.decrypter.decrypt(mes_ecrypted)
         Chat.create_msg(msg, text=decrypted_message.decode('utf8'))
         proto.notify(f'new_{self.name}', msg)
         logger.info(f'Получено сообщение от пользователя {sender}')
Ejemplo n.º 2
0
    def send_message(self, extra=None):
        """Отправка сообщения."""
        text = extra or self.get_msg_text()
        if not self.current_chat or not text:
            return
        if not self.encryptors:
            self.set_active()
            time.sleep(1)
            if not self.encryptors:
                logger.warn(f'Нет ключа для этого чата {self.current_chat}')
                self.critical('Нет ключа для этого чата')
                return

        client = self.get_client()
        for username, encryptor in self.encryptors.items():
            mes_crypted = encryptor.encrypt(text.encode('utf8'))
            message = self.make_message(username, base64.b64encode(mes_crypted).decode('ascii'))
            client.notify(f'send_{settings.MESSAGE}', msg=message)

        Chat.create_msg(message, text=text)

        self.clear_msg_text()
        self.fill_chat()