def update(self): self.torrent.update() promise = Promise(self.bot.editMessageText, args=(self._get_new_text(), ), kwargs={ "chat_id": self.chat_id, "message_id": self.message_id, "parse_mode": "markdown", }) self.message_queue(promise, is_group_msg=True) try: promise.result() except telegram.error.BadRequest as bad_request: if bad_request.message == 'Message to edit not found': raise MessageNotFound(bad_request.message) logging.warning(bad_request) except telegram.error.TimedOut: logging.warning('Timeout when editing message')
def create(self): logging.info('Creating new download message') promise = Promise(self.bot.sendMessage, args=( self.chat_id, self._get_new_text(), ), kwargs={ "disable_notification": True, "parse_mode": "markdown", }) self.message_queue(promise) try: self.message_id = promise.result().message_id except telegram.error.TimedOut: logging.warning("Timeout when creating a new download message")
def reverse_image_search( self, bot: Bot, update: Update, media_file: str, message: Promise = None ): """Send a reverse image search link for the image sent to us Args: bot (:obj:`telegram.bot.Bot`): Telegram Api Bot Object. update (:obj:`telegram.update.Update`): Telegram Api Update Object media_file (:obj:`str`): Path to file to search for message (:obj:`telegram.message.Message`, optional): An message object to update. Instead of sending a new """ image_extension = os.path.splitext(media_file)[1] image_name = "irs-" + str(uuid4())[:8] ( iqdb_search, google_search, tineye_search, bing_search, yandex_search, saucenao_search, trace_search, ) = ( IQDBReverseImageSearchEngine(), GoogleReverseImageSearchEngine(), TinEyeReverseImageSearchEngine(), BingReverseImageSearchEngine(), YandexReverseImageSearchEngine(), SauceNaoReverseImageSearchEngine(), TraceReverseImageSearchEngine(), ) image_url = iqdb_search.upload_image( media_file, image_name + image_extension, remove_after=3600 ) if os.path.isfile(image_url): reply = "This bot is not configured for this functionality, contact an admin for more information /support." message = message.result() if message: message.edit_text(reply, reply_to_message_id=update.message.message_id) else: update.message.reply_text( reply, reply_to_message_id=update.message.message_id ) return button_list = [ [InlineKeyboardButton(text="Go To Image", url=image_url)], [ iqdb_search.button(image_url), saucenao_search.button(image_url), ], [ google_search.button(image_url), yandex_search.button(image_url), ], [ bing_search.button(image_url), trace_search.button(image_url), ], [ tineye_search.button(image_url), ], ] reply = ( "Tap on the search engine of your choice. For an even better experience with more search providers and" " in telegram search results use @reverse_image_search_bot." ) reply_markup = InlineKeyboardMarkup(button_list) message = message.result() if message: bot.edit_message_text( chat_id=update.message.chat_id, message_id=message.message_id, text=reply, reply_markup=reply_markup, ) else: update.message.reply_text(text=reply, reply_markup=reply_markup)
def reverse_image_search(self, bot: Bot, update: Update, media_file: str, message: Promise = None): """Send a reverse image search link for the image sent to us Args: bot (:obj:`telegram.bot.Bot`): Telegram Api Bot Object. update (:obj:`telegram.update.Update`): Telegram Api Update Object media_file (:obj:`str`): Path to file to search for message (:obj:`telegram.message.Message`, optional): An message object to update. Instead of sending a new """ image_extension = os.path.splitext(media_file)[1] image_name = 'irs-' + str(uuid4())[:8] iqdb_search, google_search, tineye_search, bing_search, yandex_search = ( IQDBReverseImageSearchEngine(), GoogleReverseImageSearchEngine(), TinEyeReverseImageSearchEngine(), BingReverseImageSearchEngine(), YandexReverseImageSearchEngine()) image_url = iqdb_search.upload_image(media_file, image_name + image_extension, remove_after=3600) if os.path.isfile(image_url): reply = 'This bot is not configured for this functionality, contact an admin for more information /support.' message = message.result() if message: message.edit_text( reply, reply_to_message_id=update.message.message_id) else: update.message.reply_text( reply, reply_to_message_id=update.message.message_id) return iqdb_url, google_url, tineye_url, bing_url, yandex_url = ( iqdb_search.get_search_link_by_url(image_url), google_search.get_search_link_by_url(image_url), tineye_search.get_search_link_by_url(image_url), bing_search.get_search_link_by_url(image_url), yandex_search.get_search_link_by_url(image_url)) button_list = [[ InlineKeyboardButton(text='Go To Image', url=image_url) ], [ InlineKeyboardButton(text='IQDB', url=iqdb_url), InlineKeyboardButton(text='GOOGLE', url=google_url), ], [ InlineKeyboardButton(text='YANDEX', url=yandex_url), InlineKeyboardButton(text='BING', url=bing_url), ], [ InlineKeyboardButton(text='TINEYE', url=tineye_url), ]] reply = 'Tap on the search engine of your choice.' reply_markup = InlineKeyboardMarkup(button_list) message = message.result() if message: bot.edit_message_text(chat_id=update.message.chat_id, message_id=message.message_id, text=reply, reply_markup=reply_markup) else: update.message.reply_text(text=reply, reply_markup=reply_markup)
def result(promise: Promise, type: Type[TP]) -> TP: return promise.result()