def convert_message(self, msg): try: # logging.info(msg) id = msg.id extra = {} content = msg.content type = 'text' date = time() logging.info('%s - %s' % (time(), mktime(msg.created_at.timetuple()))) reply = None sender = User(msg.author.id, msg.author.name, '#' + msg.author.discriminator, msg.author.name + '#' + msg.author.discriminator, msg.author.bot) conversation = Conversation(msg.channel.id) if hasattr(msg.channel, 'name'): conversation.id = -msg.channel.id conversation.title = msg.channel.name elif hasattr(msg.channel, 'recipient'): conversation.id = msg.channel.recipient.id conversation.title = msg.channel.recipient.name return Message(id, conversation, sender, content, type, date, reply, extra) except Exception as e: logging.error(e) catch_exception(e, self.bot)
def convert_message(self, msg): id = msg['id'] if msg.receiver.type == 'user': conversation = Conversation(msg.sender.peer_id) conversation.title = msg.sender.first_name else: if msg.receiver.type == 'channel': conversation = Conversation(-int('100' + str(msg.receiver.peer_id))) else: conversation = Conversation(-int(msg.receiver.peer_id)) conversation.title = msg.receiver.title if msg.sender.type == 'user': sender = User(int(msg.sender.peer_id)) sender.first_name = msg.sender.first_name if 'first_name' in msg.sender: sender.first_name = msg.sender.first_name if 'last_name' in msg.sender: sender.last_name = msg.sender.last_name if 'username' in msg.sender: sender.username = msg.sender.username else: if msg.sender.type == 'channel': sender = Conversation(-int('100' + str(msg.sender.peer_id))) else: sender = Conversation(-int(msg.sender.peer_id)) sender.title = msg.sender.title date = msg.date # Gets the type of the message if 'text' in msg: type = 'text' content = msg.text extra = None elif 'media' in msg: type = msg.media.type content = msg.id if 'caption' in msg.media: extra = msg.media.caption else: extra = None elif msg.event == 'service': type = 'service' if msg.action.type == 'chat_del_user': content = 'left_user' extra = msg.action.user.peer_id elif msg.action.type == 'chat_add_user': content = 'join_user' extra = msg.action.user.peer_id elif msg.action.type == 'chat_add_user_link': content = 'join_user' extra = msg.sender.peer_id else: type = None content = None extra = None else: type = None content = None extra = None # Generates another message object for the original message if the reply. if 'reply_id' in msg: reply_msg = self.sender.message_get(msg.reply_id) reply = self.convert_message(reply_msg) else: reply = None return Message(id, conversation, sender, content, type, date, reply, extra)
def convert_message(self, msg): try: # logging.info(msg) id = msg['id'] extra = {} raw_chat = self.server_request('getChat', {'chat_id': msg['chat_id']}) conversation = Conversation(int(msg['chat_id'])) if raw_chat and 'title' in raw_chat: conversation.title = raw_chat['title'] if 'user_id' in msg['sender']: raw_sender = self.server_request( 'getUser', {'user_id': msg['sender']['user_id']}) sender = User(int(msg['sender']['user_id'])) if 'first_name' in raw_sender: sender.first_name = str(raw_sender['first_name']) if 'last_name' in raw_sender: sender.last_name = str(raw_sender['last_name']) if 'username' in raw_sender: sender.username = str(raw_sender['username']) else: sender = User(conversation.id, conversation.title) if msg['content']['@type'] == 'messageText': content = msg['content']['text']['text'] type = 'text' if 'entities' in msg['content']['text']: for entity in msg['content']['text']['entities']: if entity['type']['@type'] == 'textEntityTypeUrl': if 'urls' not in extra: extra['urls'] = [] extra['urls'].append( fix_telegram_link( content[entity['offset']:entity['offset'] + entity['length']])) elif entity['type'][ '@type'] == 'textEntityTypeMention': if 'mentions' not in extra: extra['mentions'] = [] extra['mentions'].append( content[entity['offset']:entity['offset'] + entity['length']]) elif entity['type'][ '@type'] == 'textEntityTypeMentionText': if 'mentions' not in extra: extra['mentions'] = [] extra['mentions'].append(entity['user']['id']) elif entity['type'][ '@type'] == 'textEntityTypeHashtag': if 'hashtags' not in extra: extra['hashtags'] = [] extra['hashtags'].append( content[entity['offset']:entity['offset'] + entity['length']]) elif entity['type'][ '@type'] == 'textEntityTypeCashtag': if 'cashtags' not in extra: extra['cashtags'] = [] extra['cashtags'].append( content[entity['offset']:entity['offset'] + entity['length']]) elif entity['type'][ '@type'] == 'textEntityTypeBotCommand': if 'commands' not in extra: extra['commands'] = [] extra['commands'].append( content[entity['offset']:entity['offset'] + entity['length']]) elif entity['type'][ '@type'] == 'textEntityTypeEmailAddress': if 'emails' not in extra: extra['emails'] = [] extra['emails'].append( content[entity['offset']:entity['offset'] + entity['length']]) elif entity['type'][ '@type'] == 'textEntityTypePhoneNumber': if 'phone_numbers' not in extra: extra['phone_numbers'] = [] extra['phone_numbers'].append( content[entity['offset']:entity['offset'] + entity['length']]) elif msg['content']['@type'] == 'messagePhoto': content = msg['content']['photo']['sizes'][0]['photo'][ 'remote']['id'] type = 'photo' if msg['content']['caption']: extra['caption'] = msg['content']['caption'] elif msg['content']['@type'] == 'messageAnimation': content = msg['content']['animation']['animation']['remote'][ 'id'] type = 'animation' if msg['content']['caption']: extra['caption'] = msg['content']['caption'] elif msg['content']['@type'] == 'messageDocument': content = msg['content']['document']['document']['remote'][ 'id'] type = 'document' if msg['content']['caption']: extra['caption'] = msg['content']['caption'] elif msg['content']['@type'] == 'messageAudio': content = msg['content']['audio']['audio']['remote']['id'] type = 'audio' if msg['content']['caption']: extra['caption'] = msg['content']['caption'] elif msg['content']['@type'] == 'messageVideo': content = msg['content']['video']['video']['remote']['id'] type = 'video' if msg['content']['caption']: extra['caption'] = msg['content']['caption'] elif msg['content']['@type'] == 'messageVoiceNote': content = msg['content']['voice_note']['voice']['remote']['id'] type = 'voice' if msg['content']['caption']: extra['caption'] = msg['content']['caption'] elif msg['content']['@type'] == 'messageSticker': content = msg['content']['sticker']['sticker']['remote']['id'] type = 'sticker' elif msg['content']['@type'] == 'messageChatAddMembers': content = 'new_chat_member' type = 'notification' request = self.client.get_user( msg['content']['member_user_ids'][0]) request.wait() raw_user = request.update extra = { 'user': User(int(msg['content']['member_user_ids'][0])) } if raw_user: if 'first_name' in raw_user: extra['user'].first_name = str(raw_user['first_name']) if 'last_name' in raw_user: extra['user'].last_name = str(raw_user['last_name']) if 'username' in raw_user: extra['user'].username = str(raw_user['username']) elif msg['content']['@type'] == 'messageChatJoinByLink': content = 'new_chat_member' type = 'notification' extra = {'user': sender} elif msg['content']['@type'] == 'messageChatDeleteMember': content = 'left_chat_member' type = 'notification' request = self.client.get_user(msg['content']['user_id']) request.wait() raw_user = request.update extra = {'user': User(int(msg['content']['user_id']))} if raw_user: if 'first_name' in raw_user: extra['user'].first_name = str(raw_user['first_name']) if 'last_name' in raw_user: extra['user'].last_name = str(raw_user['last_name']) if 'username' in raw_user: extra['user'].username = str(raw_user['username']) elif msg['content']['@type'] == 'messageUnsupported': content = 'Message content that is not supported by the client' type = 'unsupported' else: logging.info('UNSUPPORTED MESSAGE TYPE: {}'.format( msg['content']['@type'])) content = msg['content']['@type'] type = 'unsupported' reply = None if 'reply_to_message_id' in msg and msg['reply_to_message_id'] > 0: reply = self.get_message(msg['chat_id'], msg['reply_to_message_id']) if 'forward_info' in msg and msg['forward_info']: extra['from_chat_id'] = msg['forward_info']['from_chat_id'] extra['from_message_id'] = msg['forward_info'][ 'from_message_id'] if 'chat_id' in msg['forward_info']['origin']: extra['from_chat_id'] = msg['forward_info']['origin'][ 'chat_id'] if 'message_id' in msg['forward_info']['origin']: extra['from_message_id'] = msg['forward_info']['origin'][ 'message_id'] if 'sender_user_id' in msg['forward_info']['origin']: extra['from_user_id'] = msg['forward_info']['origin'][ 'sender_user_id'] if 'via_bot_user_id' in msg and msg['via_bot_user_id'] > 0: extra['via_bot_user_id'] = msg['via_bot_user_id'] if 'restriction_reason' in msg and msg['restriction_reason']: extra['restriction_reason'] = msg['restriction_reason'] if 'reply_markup' in msg and msg['reply_markup']: extra['reply_markup'] = msg['reply_markup'] date = msg['date'] return Message(id, conversation, sender, content, type, date, reply, extra) except Exception as e: logging.error('convert_message exception: {}'.format(e)) catch_exception(e, self.bot)
def convert_message(self, msg): id = msg['id'] if msg.receiver.type == 'user': conversation = Conversation(msg.sender.peer_id) conversation.title = msg.sender.first_name else: if msg.receiver.type == 'channel': conversation = Conversation(- int('100' + str(msg.receiver.peer_id))) else: conversation = Conversation(- int(msg.receiver.peer_id)) conversation.title = msg.receiver.title if msg.sender.type == 'user': sender = User(int(msg.sender.peer_id)) if 'first_name' in msg.sender: sender.first_name = msg.sender.first_name if 'last_name' in msg.sender: sender.last_name = msg.sender.last_name if 'username' in msg.sender: sender.username = msg.sender.username else: if msg.sender.type == 'channel': sender = Conversation(- int('100' + str(msg.sender.peer_id))) else: sender = Conversation(- int(msg.sender.peer_id)) sender.first_name = msg.sender.title date = msg.date # Gets the type of the message if 'text' in msg: type = 'text' content = msg.text extra = None elif 'media' in msg: type = msg.media.type content = msg.id if 'caption' in msg.media: extra = msg.media.caption else: extra = None elif msg.event == 'service': type = 'service' if msg.action.type == 'chat_del_user': content = 'left_user' extra = msg.action.user.peer_id elif msg.action.type == 'chat_add_user': content = 'join_user' extra = msg.action.user.peer_id elif msg.action.type == 'chat_add_user_link': content = 'join_user' extra = msg.sender.peer_id else: type = None content = None extra = None else: type = None content = None extra = None # Generates another message object for the original message if the reply. if 'reply_id' in msg: reply_msg = self.sender.message_get(msg.reply_id) reply = self.convert_message(reply_msg) else: reply = None return Message(id, conversation, sender, content, type, date, reply, extra)