def save(bot: Bot, update: Update): chat_id = update.effective_chat.id msg = update.effective_message # type: Optional[Message] note_name, text, data_type, content, buttons = get_note_type(msg) if data_type is None: msg.reply_text("Dude, there's no note") return if len(text.strip()) == 0: text = note_name sql.add_note_to_db(chat_id, note_name, text, data_type, buttons=buttons, file=content) msg.reply_text( "Your {note_name} note is added.\nGet it with /get {note_name}, or #{note_name}" .format(note_name=note_name)) if msg.reply_to_message and msg.reply_to_message.from_user.is_bot: if text: msg.reply_text( "Seems like you're trying to save a message from a bot. Unfortunately, " "bots can't forward bot messages, so I can't save the exact message. " "\nI'll save all the text I can, but if you want more, you'll have to " "forward the message yourself, and then save it.") else: msg.reply_text( "Bots are kinda handicapped by telegram, making it hard for bots to " "interact with other bots, so I can't save this message " "like I usually would - do you mind forwarding it and " "then saving that new message? Thanks!") return
def __import_data__(chat_id, data): failures = [] for notename, notedata in data.get('extra', {}).items(): match = FILE_MATCHER.match(notedata) if match: failures.append(notename) notedata = notedata[match.end():].strip() if notedata: sql.add_note_to_db(chat_id, notename[1:], notedata, sql.Types.TEXT) else: sql.add_note_to_db(chat_id, notename[1:], notedata, sql.Types.TEXT) if failures: with BytesIO(str.encode("\n".join(failures))) as output: output.name = "failed_imports.txt" dispatcher.bot.send_document( chat_id, document=output, filename="failed_imports.txt", caption="These files/photos failed to import due to originating " "from another bot. This is a telegram API restriction, and can't " "be avoided. Sorry for the inconvenience!")