def start_quote( self, date_str, time_str, author, message, sequence_id, quote_type, raw, attachment=None, ): """Make a quote from a line. Its message may not be finished on this line""" timestamp = self.parse_timestamp(date_str, time_str) if author == "You" or author == "you": author = self.you return Quote( self.channel, sequence_id, author, message, timestamp, quote_type, self.source, raw, attachment, )
def handle(self, message: dict, sequence_id: int, all_messages: list[dict]): media_type = message["media_type"] text = self.join_text(message) attachment = None if media_type == "sticker": text = message.get("sticker_emoji", text) attachment = self.read_attachment(message["file"]) elif media_type in [ "animation", "video_file", "audio_file", "voice_message" ]: attachment = self.read_attachment(message["file"]) return Quote( self.channel, sequence_id, message["from"], text, self.parse_date(message), QuoteType.attachment, self.source, json.dumps(message), attachment, )
def handle(self, message: dict, sequence_id: int, all_messages: list[dict]): return Quote( self.channel, sequence_id, message["from"], self.join_text(message), self.parse_date(message), QuoteType.message, self.source, json.dumps(message), )
def handle(self, message: dict, sequence_id: int, all_messages: list[dict]): return Quote( self.channel, sequence_id, message["actor"], message["title"], self.parse_date(message), QuoteType.subject, self.source, json.dumps(message), )
def handle(self, message: dict, sequence_id: int, all_messages: list[dict]): return Quote( self.channel, sequence_id, message["actor"], f'Invited {", ".join(m for m in message["members"])}', self.parse_date(message), QuoteType.system, self.source, json.dumps(message), )
def make_quote(self, datetime_str, author, message, sequence_id, quote_type, raw): """Make a quote from a line""" self.current_date = self.parse_timestamp(datetime_str) return Quote( self.channel, sequence_id, author, message or "", self.current_date, quote_type, self.source, raw, )
def handle(self, message: dict, sequence_id: int, all_messages: list[dict]): attachment = self.read_attachment(message["photo"]) return Quote( self.channel, sequence_id, message["actor"], message["action"], self.parse_date(message), QuoteType.subject, self.source, json.dumps(message), attachment, )
def handle(self, message: dict, sequence_id: int, all_messages: list[dict]): pinned_id = message["message_id"] pinned_message = next( (m for m in all_messages if m["id"] == pinned_id), None) pinned_text = (f"{pinned_message['from']}: {pinned_message['text']}" if pinned_message else "") return Quote( self.channel, sequence_id, message["actor"], pinned_text, self.parse_date(message), QuoteType.subject, self.source, json.dumps(message), )
def make_quote(self, datetime_str, author, message, sequence_id, quote_type, raw): """Make a quote from a line""" if author is None: author = "" if message is None: message = "" timestamp = self.parse_timestamp(datetime_str) return Quote( self.channel, sequence_id, author, message, timestamp, quote_type, self.source, raw, )
def make_quote(self, date, time_str, author, message, sequence_id, quote_type, raw): """Make a quote from a line""" (hours, minutes) = [int(x) for x in time_str.split(":")] local_dt = datetime(date.year, date.month, date.day, hours, minutes, 0, tzinfo=self.tzinfo) timestamp = local_dt.astimezone(timezone.utc) return Quote( self.channel, sequence_id, author, message, timestamp, quote_type, self.source, raw, )