def get_activity_buttons(self, state, update: Update): def get_keyboard_by_names(names): keyboard = list() i = 0 for name in names: button = { "name": name, "action": "select_activity", "callback": True } if i % 2 == 0: keyboard.append([button]) else: keyboard[i // 2].append(button) i += 1 return keyboard if state['q'] == "": activity_names = DB.get_user_accessible_activities( state['u_id'], update.effective_chat.id) names = [] counted = DB.count_user_activities(state['u_id']) for obj in counted: if obj['name'] in [x['name'] for x in activity_names]: names.append(obj['name']) for activity in activity_names: if activity['name'] not in names and activity['id'] != 0: names.append(activity['name']) else: names = [ obj['name'] for obj in DB.get_user_activity_by_query( update.effective_user.id, update.effective_chat.id, state['q']) ] if 'Ничего' in names: names.remove('Ничего') i = self.IN_PAGE * (int(state['page']) - 1) return get_keyboard_by_names(names[i:i + 4])
def get_user_keyboard(self, user_id): activity_names = DB.get_all_activity_names() names = [] counted = DB.count_user_activities(user_id) for obj in counted: names.append(obj['name']) for activity in activity_names: if activity['name'] not in names and activity['id'] != 0: names.append(activity['name']) keyboard = self.get_keyboard_list_by_names(names) return ReplyKeyboardMarkup(keyboard, selective=True)
def get_activity_buttons(self, state, update: Update): def get_keyboard_by_names(names): keyboard = list() i = 0 for name in names: button = { "name": name, "action": "select_activity" } if i % 2 == 0: keyboard.append([button]) else: keyboard[i // 2].append(button) i += 1 return keyboard activity_names = DB.get_user_accessible_activities(state['u_id'], update.effective_chat.id) names = [] counted = DB.count_user_activities(state['u_id']) for obj in counted: if obj['name'] in [x['name'] for x in activity_names]: names.append(obj['name']) for activity in activity_names: if activity['name'] not in names and activity['id'] != 0: names.append(activity['name']) i = self.IN_PAGE * (int(state['p']) - 1) return get_keyboard_by_names(names[i:i + 4])