def save_to_folder(update, context): query = update.callback_query if query.message.chat_id < 0 and \ (not query.message.reply_to_message or query.from_user.id != query.message.reply_to_message.from_user.id): alert_users(context, update.effective_user, 'invalid caller', query.data) query.answer(text='Yo-he!', show_alert=True) return match = re.search(r'^save_to_folder(?:_page#[\d]+)?,\s*([\dA-Za-z\-_]+)$', query.data) fav_folders = context.user_data.get(udkey_folders, {}) if not match or match.group(1) not in fav_folders: alert_users(context, update.effective_user, 'invalid query', query.data) query.answer(text='Yo-he!', show_alert=True) return message = query.message if message.caption: text = message.caption else: text = message.text folder_ids = parse_entity_for_drive_id(message) if not folder_ids: return dest_folder = fav_folders[match.group(1)] dest_folder['folder_id'] = match.group(1) if not thread_pool.get(update.effective_user.id, None): thread_pool[update.effective_user.id] = [] t = MySaveFileThread(args=(update, context, folder_ids, text, dest_folder)) thread_pool[update.effective_user.id].append(t) t.start() logger.debug('User {} has added task {}.'.format(query.from_user.id, t.ident)) query.message.edit_reply_markup(reply_markup=InlineKeyboardMarkup( [[InlineKeyboardButton(text='Executed', callback_data='#')]]))
def chosen_folder(update, context): query = update.callback_query if query.message.chat_id < 0 and \ (not query.message.reply_to_message or query.from_user.id != query.message.reply_to_message.from_user.id): alert_users(context, update.effective_user, 'invalid caller', query.data) query.answer(text='Yo-he!', show_alert=True) return if update.effective_user.id in config.USER_IDS\ or (context.bot_data.get('vip', None) and update.effective_user.id in context.bot_data['vip']): max_folders = default_max_folders_vip else: max_folders = default_max_folders callback_query_prefix = 'chosen_folder' try: gd = GoogleDrive(update.effective_user.id) except Exception as e: context.bot.send_message(chat_id=update.effective_user.id, text='Please make sure the SA archive has been uploaded and the collection folder has been configured.\n' '<code>{}</code>'.format(html.escape(str(e))), parse_mode=ParseMode.HTML) return query = update.callback_query match = re.search(r'^{},(?P<folder_id>[\dA-Za-z\-_]+)$'.format(callback_query_prefix), query.data) if not match: alert_users(context, update.effective_user, 'invalid query', query.data) query.answer(text='Yo-he!', show_alert=True) return folder_id = match.group('folder_id') drive_ids_replace = context.user_data.get(udkey_fav_folders_replace, None) favourite_drive_ids = context.user_data.get(udkey_folders, {}) new_fav_folders = copy.deepcopy(favourite_drive_ids) new_fav_folders.pop(drive_ids_replace, None) new_fav_folders_len = len(new_fav_folders) if new_fav_folders_len < max_folders: current_path_list = gd.get_file_path_from_id(folder_id) if not current_path_list: alert_users(context, update.effective_user, 'invalid folder id', query.data) query.answer(text='Yo-he!', show_alert=True) return current_path_list.reverse() new_fav_folders[folder_id] = { 'name': current_path_list[-1]['name'], 'path': '/' + '/'.join(item['name'] for item in current_path_list), } context.user_data[udkey_folders] = new_fav_folders context.user_data[udkey_fav_folders_replace] = None context.dispatcher.update_persistence() set_folders(update, context) else: query.answer(text='Maximum {}'.format(max_folders), show_alert=True) return
def choose_folder(update, context): current_folder_id = '' folders = None try: gd = GoogleDrive(update.effective_user.id) except Exception as e: context.bot.send_message( chat_id=update.effective_user.id, text= 'Please confirm that the SA has been uploaded correctly and configure the favorite folder.\n' '<code>{}</code>'.format(html.escape(str(e))), parse_mode=ParseMode.HTML) return if context.args: current_folder_id = context.args[0] try: gd.get_file_name(current_folder_id) folders = gd.list_folders(current_folder_id) except Exception as e: folders = gd.get_drives() current_folder_id = '' context.bot.send_message(chat_id=update.effective_user.id, text='error๏ผ\n<code>{}</code>'.format( html.escape(str(e))), parse_mode=ParseMode.HTML) callback_query_prefix = 'choose_folder' query = update.callback_query page = None message_id = -1 if not query: rsp = update.message.reply_text('Get catalog...') rsp.done.wait(timeout=60) message_id = rsp.result().message_id if not folders: folders = gd.get_drives() context.user_data[udkey_folders_cache] = copy.deepcopy(folders) if query: logger.debug('{}: {}'.format(update.effective_user.id, query.data)) if query.message.chat_id < 0 and \ (not query.message.reply_to_message or query.from_user.id != query.message.reply_to_message.from_user.id): alert_users(context, update.effective_user, 'invalid caller', query.data) query.answer(text='Yo ha', show_alert=True) return message_id = query.message.message_id match = re.search( r'^(?P<un>un)?{}(?P<replace>_replace)?(?:_page#(?P<page>\d+))?' r'(?:,(?P<folder_id>[\dA-Za-z\-_]+))?$'.format( callback_query_prefix), query.data) if match: match_folder_id = match.group('folder_id') if match_folder_id: current_folder_id = match_folder_id try: gd.get_file_name(current_folder_id) folders = gd.list_folders(match_folder_id) except Exception as e: folders = gd.get_drives() current_folder_id = '' context.bot.send_message( chat_id=update.effective_user.id, text='error๏ผ\n<code>{}</code>'.format( html.escape(str(e))), parse_mode=ParseMode.HTML) context.user_data[udkey_folders_cache] = copy.deepcopy(folders) if not folders: folders = {'#': '(No subfolders)'} match_folder_id_replace = match.group('replace') if match_folder_id_replace: context.user_data[ udkey_fav_folders_replace] = match_folder_id if match.group('page'): page = int(match.group('page')) if not folders and match.group('page'): folders = context.user_data.get(udkey_folders_cache, None) if not folders: folders = gd.get_drives() context.user_data[udkey_folders_cache] = copy.deepcopy(folders) if not folders: folders = { '#': 'If the team disk is not saved, please save it before operation.' } else: alert_users(context, update.effective_user, 'invalid query data', query.data) query.answer(text='Yo ha', show_alert=True) return if not page: page = 1 folders_len = len(folders) page_data = [] for item in folders: page_data.append({'text': folders[item], 'data': item}) page_data_chosen = list(context.user_data.get(udkey_folders, {})) inline_keyboard_drive_ids = get_inline_keyboard_pagination_data( callback_query_prefix, page_data, page_data_chosen=page_data_chosen, page=page, max_per_page=10, ) if current_folder_id: current_path = '' current_path_list = gd.get_file_path_from_id(current_folder_id) if current_path_list: current_folder_name = current_path_list[0]['name'] for item in current_path_list: current_path = '/{}{}'.format(item['name'], current_path) if len(current_path_list) > 1: inline_keyboard_drive_ids.insert(0, [ InlineKeyboardButton( '๐' + current_path, callback_data='{},{}'.format( callback_query_prefix, current_path_list[1]['folder_id'])) ]) else: inline_keyboard_drive_ids.insert(0, [ InlineKeyboardButton('๐' + current_path, callback_data=callback_query_prefix) ]) inline_keyboard_drive_ids.append([ InlineKeyboardButton( 'Select this folder({})'.format(current_folder_name), callback_data='chosen_folder,{}'.format(current_folder_id)) ]) inline_keyboard_drive_ids.append([ InlineKeyboardButton( 'Back to top', callback_data='choose_folder' if current_folder_id else '#'), InlineKeyboardButton('cancel', callback_data='cancel') ]) context.bot.edit_message_text( chat_id=update.effective_chat.id, message_id=message_id, text='Select the directory to save, a total of {} subdirectories'. format(folders_len), reply_markup=InlineKeyboardMarkup(inline_keyboard_drive_ids))
def get_warning(update, context): query = update.callback_query alert_users(context, update.effective_user, 'unknown query data', query.data) query.answer(text='Yo-he!', show_alert=True)
def choose_folder(update, context): current_folder_id = '' folders = None try: gd = GoogleDrive(update.effective_user.id) except Exception as e: context.bot.send_message(chat_id=update.effective_user.id, text='่ฏท็กฎ่ฎคSAๅทฒๆญฃ็กฎไธไผ ๏ผๅนถ้ ็ฝฎๆถ่ๆไปถๅคนใ\n' '<code>{}</code>'.format(html.escape(str(e))), parse_mode=ParseMode.HTML) return if context.args: current_folder_id = context.args[0] try: gd.get_file_name(current_folder_id) folders = gd.list_folders(current_folder_id) except Exception as e: folders = gd.get_drives() current_folder_id = '' context.bot.send_message(chat_id=update.effective_user.id, text='้่ฏฏ๏ผ\n<code>{}</code>'.format( html.escape(str(e))), parse_mode=ParseMode.HTML) callback_query_prefix = 'choose_folder' query = update.callback_query page = None message_id = -1 if not query: rsp = update.message.reply_text('่ทๅ็ฎๅฝ...') rsp.done.wait(timeout=60) message_id = rsp.result().message_id if not folders: # folders = context.user_data.get(udkey_fav_drives, None) folders = gd.get_drives() context.user_data[udkey_folders_cache] = copy.deepcopy(folders) if query: logger.debug('{}: {}'.format(update.effective_user.id, query.data)) if query.message.chat_id < 0 and \ (not query.message.reply_to_message or query.from_user.id != query.message.reply_to_message.from_user.id): alert_users(context, update.effective_user, 'invalid caller', query.data) query.answer(text='ๅๅต', show_alert=True) return message_id = query.message.message_id match = re.search( r'^(?P<un>un)?{}(?P<replace>_replace)?(?:_page#(?P<page>\d+))?' r'(?:,(?P<folder_id>[\dA-Za-z\-_]+))?$'.format( callback_query_prefix), query.data) if match: match_folder_id = match.group('folder_id') if match_folder_id: current_folder_id = match_folder_id try: gd.get_file_name(current_folder_id) folders = gd.list_folders(match_folder_id) except Exception as e: folders = gd.get_drives() current_folder_id = '' context.bot.send_message( chat_id=update.effective_user.id, text='้่ฏฏ๏ผ\n<code>{}</code>'.format(html.escape( str(e))), parse_mode=ParseMode.HTML) context.user_data[udkey_folders_cache] = copy.deepcopy(folders) if not folders: folders = {'#': '(ๆ ๅญๆไปถๅคน)'} match_folder_id_replace = match.group('replace') if match_folder_id_replace: context.user_data[ udkey_fav_folders_replace] = match_folder_id if match.group('page'): page = int(match.group('page')) if not folders and match.group('page'): folders = context.user_data.get(udkey_folders_cache, None) if not folders: # folders = context.user_data.get(udkey_fav_drives, None) folders = gd.get_drives() context.user_data[udkey_folders_cache] = copy.deepcopy(folders) if not folders: folders = {'#': 'ๆชๆถ่ๅข้็๏ผๅ ๆถ่ๆ่ฝๆไฝใ'} else: alert_users(context, update.effective_user, 'invalid query data', query.data) query.answer(text='ๅๅต', show_alert=True) return if not page: page = 1 folders_len = len(folders) page_data = [] for item in folders: page_data.append({'text': folders[item], 'data': item}) page_data_chosen = list(context.user_data.get(udkey_folders, {})) inline_keyboard_drive_ids = get_inline_keyboard_pagination_data( callback_query_prefix, page_data, page_data_chosen=page_data_chosen, page=page, max_per_page=10, ) if current_folder_id: current_path = '' current_path_list = gd.get_file_path_from_id(current_folder_id) if current_path_list: current_folder_name = current_path_list[0]['name'] for item in current_path_list: current_path = '/{}{}'.format(item['name'], current_path) if len(current_path_list) > 1: inline_keyboard_drive_ids.insert(0, [ InlineKeyboardButton( '๐' + current_path, callback_data='{},{}'.format( callback_query_prefix, current_path_list[1]['folder_id'])) ]) else: inline_keyboard_drive_ids.insert(0, [ InlineKeyboardButton('๐' + current_path, callback_data=callback_query_prefix) ]) inline_keyboard_drive_ids.append([ InlineKeyboardButton( '้ๆฉๆฌๆไปถๅคน({})'.format(current_folder_name), callback_data='chosen_folder,{}'.format(current_folder_id)) ]) inline_keyboard_drive_ids.append([ InlineKeyboardButton( '่ฟๅ้กถๅฑ', callback_data='choose_folder' if current_folder_id else '#'), InlineKeyboardButton('ๅๆถ', callback_data='cancel') ]) context.bot.edit_message_text( chat_id=update.effective_chat.id, message_id=message_id, text='้ๆฉ่ฆไฟๅญ็็ฎๅฝ๏ผๅ ฑ{}ไธชๅญ็ฎๅฝ'.format(folders_len), reply_markup=InlineKeyboardMarkup(inline_keyboard_drive_ids))
def choose_folder(update, context): current_folder_id = '' folders = None try: gd = GoogleDrive(update.effective_user.id) except Exception as e: context.bot.send_message( chat_id=update.effective_user.id, text= '๐ธ ๐รผ๐๐ณ๐ฒ๐ป ๐ฆ๐ ๐รผ๐ธ๐น๐ฒ๐ป๐ฑ๐ถฤ๐ถ๐ป๐ฑ๐ฒ๐ป ๐๐ฒ ๐ธ๐น๐ฎ๐รถ๐ฟรผ๐ปรผ๐ป ๐๐ฎ๐ฝฤฑ๐น๐ฎ๐ป๐ฑฤฑ๐ฟฤฑ๐น๐ฑฤฑฤฤฑ๐ป๐ฑ๐ฎ๐ป ๐ฒ๐บ๐ถ๐ป ๐ผ๐น๐๐ป..\n' '<code>{}</code>'.format(html.escape(str(e))), parse_mode=ParseMode.HTML) return if context.args: current_folder_id = context.args[0] try: gd.get_file_name(current_folder_id) folders = gd.list_folders(current_folder_id) except Exception as e: folders = gd.get_drives() current_folder_id = '' context.bot.send_message(chat_id=update.effective_user.id, text='Error๏ผ\n<code>{}</code>'.format( html.escape(str(e))), parse_mode=ParseMode.HTML) callback_query_prefix = 'choose_folder' query = update.callback_query page = None message_id = -1 if not query: rsp = update.message.reply_text('โ๏ธ ๐ฏ๐๐๐๐ ๐๐ฤฑ๐ฤฑ๐๐๐...') rsp.done.wait(timeout=60) message_id = rsp.result().message_id if not folders: folders = gd.get_drives() context.user_data[udkey_folders_cache] = copy.deepcopy(folders) if query: logger.debug('{}: {}'.format(update.effective_user.id, query.data)) if query.message.chat_id < 0 and \ (not query.message.reply_to_message or query.from_user.id != query.message.reply_to_message.from_user.id): alert_users(context, update.effective_user, 'invalid caller', query.data) query.answer(text='Yo-he!', show_alert=True) return message_id = query.message.message_id match = re.search( r'^(?P<un>un)?{}(?P<replace>_replace)?(?:_page#(?P<page>\d+))?' r'(?:,(?P<folder_id>[\dA-Za-z\-_]+))?$'.format( callback_query_prefix), query.data) if match: match_folder_id = match.group('folder_id') if match_folder_id: current_folder_id = match_folder_id try: gd.get_file_name(current_folder_id) folders = gd.list_folders(match_folder_id) except Exception as e: folders = gd.get_drives() current_folder_id = '' context.bot.send_message( chat_id=update.effective_user.id, text='โ๏ธ Error๏ผ\n<code>{}</code>'.format( html.escape(str(e))), parse_mode=ParseMode.HTML) context.user_data[udkey_folders_cache] = copy.deepcopy(folders) if not folders: folders = {'#': '(No subfolders)'} match_folder_id_replace = match.group('replace') if match_folder_id_replace: context.user_data[ udkey_fav_folders_replace] = match_folder_id if match.group('page'): page = int(match.group('page')) if not folders and match.group('page'): folders = context.user_data.get(udkey_folders_cache, None) if not folders: folders = gd.get_drives() context.user_data[udkey_folders_cache] = copy.deepcopy(folders) if not folders: folders = { '#': 'Ortak sรผrรผcรผnรผz yoksa bir tane olmak iรงin @kamileecher1.' } else: alert_users(context, update.effective_user, 'invalid query data', query.data) query.answer(text='Yo-he!', show_alert=True) return if not page: page = 1 folders_len = len(folders) page_data = [] for item in folders: page_data.append({'text': folders[item], 'data': item}) page_data_chosen = list(context.user_data.get(udkey_folders, {})) inline_keyboard_drive_ids = get_inline_keyboard_pagination_data( callback_query_prefix, page_data, page_data_chosen=page_data_chosen, page=page, max_per_page=10, ) if current_folder_id: current_path = '' current_path_list = gd.get_file_path_from_id(current_folder_id) if current_path_list: current_folder_name = current_path_list[0]['name'] for item in current_path_list: current_path = '/{}{}'.format(item['name'], current_path) if len(current_path_list) > 1: inline_keyboard_drive_ids.insert(0, [ InlineKeyboardButton( '๐ ' + current_path, callback_data='{},{}'.format( callback_query_prefix, current_path_list[1]['folder_id'])) ]) else: inline_keyboard_drive_ids.insert(0, [ InlineKeyboardButton('๐' + current_path, callback_data=callback_query_prefix) ]) inline_keyboard_drive_ids.append([ InlineKeyboardButton( 'โ๏ธ Select this folder({})'.format(current_folder_name), callback_data='chosen_folder,{}'.format(current_folder_id)) ]) inline_keyboard_drive_ids.append([ InlineKeyboardButton( '๐ Go back', callback_data='choose_folder' if current_folder_id else '#'), InlineKeyboardButton('Cancel', callback_data='cancel') ]) context.bot.edit_message_text( chat_id=update.effective_chat.id, message_id=message_id, text= '๐ถ Select the directory you want to use, there are {} subdirectories.'. format(folders_len), reply_markup=InlineKeyboardMarkup(inline_keyboard_drive_ids))