def __repr__(self): readable = { 'call_log': { 'miss': "Missed Call", }, 'e2e_notification': { 'encrypt': "Messages now Encrypted" }, 'gp2': { 'invite': "Joined an invite link", 'create': "Created group", 'add': "Added to group", 'remove': "Removed from group", 'leave': "Left the group" } } sender = "" if not self.sender else ( "from " + str(safe_str(self.sender.get_safe_name()))) return "<NotificationMessage - {type} {recip} {sender} at {timestamp}>".format( type=readable[self.type][self.subtype], sender=sender, timestamp=self.timestamp, recip="" if not hasattr(self, 'recipients') else "".join( [safe_str(x.get_safe_name()) for x in self.recipients]), )
def __repr__(self): return "<VCardMessage - {type} from {sender} at {timestamp} ({contacts})>".format( type=self.type, sender=safe_str(self.sender.get_safe_name()), timestamp=self.timestamp, contacts=self.contacts )
def __repr__(self): return "<Message - {type} from {sender} at {timestamp}: {content}>".format( type=self.type, sender=safe_str(self.sender.get_safe_name()) if isinstance( self.sender, Contact) else self.sender, timestamp=self.timestamp, content=self.safe_content)
def whatsapp(): last_message = None while True messages = driver.get_all_messages_in_chat(group_chat, True) new_messages = [] for index, message in enumerate(messages): if last_message is None or message.timestamp > last_message.timestamp: new_messages = messages[index:] break for message in new_messages: raw_sender = safe_str(message.sender.get_safe_name()) sender = raw_sender if raw_sender != "You" else config['whatsapp_user_name'] content = message.safe_content # sc.api_call( # "chat.postMessage", # channel="#whatsapp", # text=content, # username=sender) print "[{timestamp}] {sender}: {content}".format( sender=sender, timestamp=message.timestamp, content=content) last_message = messages[-1] # Rate limit time.sleep(1)
def get_safe_name(self): name = (self.name or self.push_name or self.formatted_name) if (isinstance(name, six.string_types)): safe_name = safe_str(name) else: safe_name = "Unknown" return safe_name
def __repr__(self): return "<MediaMessage - {type} from {sender} at {timestamp} ({filename})>".format( type=self.type, sender=safe_str(self.sender.get_safe_name()), timestamp=self.timestamp, filename=self.filename )
def __repr__(self): return "<GeoMessage - {type} from {sender} at {timestamp} ({lat}, {lng})>".format( type=self.type, sender=safe_str(self.sender.get_safe_name()), timestamp=self.timestamp, lat=self.latitude, lng=self.longitude)
def __repr__(self): return "<MediaMessage - {type} from {sender} at {timestamp} ({filename})>".format( type=self.type, sender=safe_str(self.sender.get_safe_name()) if isinstance( self.sender, Contact) else 'None', timestamp=self.timestamp, filename=self.filename)
def __init__(self, js_obj): """ Constructor :param js_obj: Raw JS message obj :type js_obj: dict """ self.sender = False if js_obj["sender"] == False else Contact( js_obj["sender"]) self.timestamp = datetime.fromtimestamp(js_obj["timestamp"]) if js_obj["content"]: self.content = js_obj["content"] self.safe_content = safe_str(self.content) self.js_obj = js_obj
def __init__(self, js_obj, driver=None): """ Constructor :param js_obj: Raw JS message obj :type js_obj: dict """ super(Message, self).__init__(js_obj, driver) self.sender = False if js_obj["sender"] == False else Contact(js_obj["sender"], driver) self.timestamp = datetime.fromtimestamp(js_obj["timestamp"]) if js_obj["content"]: self.content = js_obj["content"] self.safe_content = safe_str(self.content[0:25]) + '...' self.js_obj = js_obj
def __init__(self, js_obj, driver=None): """ Constructor :param js_obj: Raw JS message obj :type js_obj: dict """ super(Message, self).__init__(js_obj, driver) self.id = js_obj["id"] self.type = js_obj["type"] self.sender = Contact(js_obj["sender"], driver) if js_obj["sender"] else False self.timestamp = datetime.fromtimestamp(js_obj["timestamp"]) self.chat_id = js_obj['chatId'] if js_obj["content"]: self.content = js_obj["content"] self.safe_content = safe_str(self.content[0:25]) + '...'
def __init__(self, js_obj, driver=None): """ Constructor :param js_obj: Raw JS message obj :type js_obj: dict """ super(Message, self).__init__(js_obj, driver) self.id = js_obj["id"] self.wsp_mid = js_obj.get('wsp_mid', None) self.sender = False self.timestamp = datetime.fromtimestamp(js_obj["timestamp"]) self.chat_id = js_obj['chatId'] if js_obj["sender"]: self.sender = Contact(js_obj["sender"], driver) try: status = MessageStatus(js_obj.get('ack', 0)) except ValueError as e: logger.error(str(e), exc_info=True) status = MessageStatus.ERROR self.lecture_status = status self.text = "" if js_obj["text"]: self.text = js_obj["text"] if js_obj["content"]: self.content = js_obj["content"] self.safe_content = safe_str(self.content[0:25]) + '...' else: logger.info("NON TEXT MESSAGE TYPE") logger.info(json.dumps(js_obj)) self.content = 'NOT SUPPORTED CONTENT' self.safe_content = 'NOT SUPPORTED CONTENT' self.quotedMessage = None if js_obj.get('quotedMsgObj', None): self.quotedMessage = js_obj['quotedMsgObj']
def __repr__(self): safe_name = safe_str(self.name) return "<Broadcast chat - {name}: {id}>".format(name=safe_name, id=self.id)
def __repr__(self): safe_name = safe_str(self.name) return "<Group chat - {name}: {id}, {participants} participants>".format( name=safe_name, id=self.id, participants=len(self.get_participants_ids()))
def __repr__(self): return "<Message - from {sender} at {timestamp}: {content}>".format( sender=safe_str(self.sender.get_safe_name()), timestamp=self.timestamp, content=self.safe_content)
def __repr__(self): return "<MMSMessage - {type} from {sender} at {timestamp}>".format( type=self.type, sender=safe_str(self.sender.get_safe_name()), timestamp=self.timestamp )
def __repr__(self): safe_chat_name = safe_str(self.chat.name) return "<MessageGroup - {num} {messages} in {chat}>".format( num=len(self.messages), messages="message" if len(self.messages) == 1 else "messages", chat=safe_chat_name)