def select_from_all_kb(self, pos, count, module="objects", reply=False, inline=False): buttons, callback = [], [] # no more than 8 buttons per line count_lines = count // 8 + int(count % 8 != 0) lines = [8 for i in range(count_lines)] extra = (8 * count_lines) - count # distribution extra i = count_lines - 1 while extra > 0: lines[i] -= 1; extra -= 1 i = int(i > 0) * (i - 1) + int(i == 0) * (count_lines - 1) pos_now = 0 for line_len in lines: line_text, line_callback = [], [] for i in range(line_len): line_text.append(f"{pos_now+1}") if pos_now != pos: line_callback.append( query.generate("EDIT_MSG_AND_KB", module, "select", pos=pos_now) ) else: line_callback.append( query.generate("EDIT_KB", module, "return_to_scroll") ) pos_now += 1 buttons.append(line_text) callback.append(line_callback) return self.right_keyboard(buttons, callback, reply, inline)
def scroll_kb(self, pos, count, module="objects", reply=False, inline=False): buttons, callback = [], [] buttons.append(["<<", f"{pos+1}/{count}", ">>"]) callback.append([ query.generate("EDIT_MSG_AND_KB", module, "scroll_left", from_pos=pos), query.generate("EDIT_KB", module, "select_from_all"), query.generate("EDIT_MSG_AND_KB", module, "scroll_right", from_pos=pos) ]) return self.right_keyboard(buttons, callback, reply, inline)
def task_start_time(self): buttons, callback = [], [] buttons.append(["Выбор месяца"]) callback.append([query.generate("EDIT_KB", "task", "keyboard", task_id=self.task.id, type="123")]) buttons.append(["Выбор недели"]) callback.append([query.generate("EDIT_KB", "task", "keyboard", task_id=self.task.id, type="123")]) buttons.append(["Выбор дня"]) callback.append([query.generate("EDIT_KB", "task", "keyboard", task_id=self.task.id, type="123")]) return buttons, callback
def main_kb(self, reply=False, inline=False): buttons, callback = [], [] buttons.append(["Create TASK"]) callback.append([ query.generate("NEW_MSG", "main", "create_task") ]) buttons.append(["WORK FLOW"]) callback.append([ query.generate("NEW_MSG", "main", "work_flow") ]) return self.right_keyboard(buttons, callback, reply, inline)
def task_type_kb(self): buttons, callback = [], [] buttons.append(["[hh:mm-time]"]) callback.append([query.generate("EDIT_KB", "task", "update", task_id=self.task.id, parameter="type", value=0)]) buttons.append(["result-orientation"]) callback.append([query.generate("EDIT_KB", "task", "update", task_id=self.task.id, parameter="type", value=1)]) buttons.append(["ONE-STEP-JOB"]) callback.append([query.generate("EDIT_KB", "task", "update", task_id=self.task.id, parameter="type", value=2)]) if self.task.type is not None: buttons[self.task.type] = ["|*| " + buttons[self.task.type][0] + " |*|"] callback[self.task.type] = [self.menu_query] return buttons, callback
def new_timer_kb(self, reply=False, inline=False): buttons, callback = [], [] buttons.append(["5 минут", "10 минут", "15 минут"]) callback.append([ query.generate("NEW_MSG", "main", "timer", duration=5), query.generate("NEW_MSG", "main", "timer", duration=10), query.generate("NEW_MSG", "main", "timer", duration=15) ]) buttons.append(["30 минут", "60 минут"]) callback.append([ query.generate("NEW_MSG", "main", "timer", duration=30), query.generate("NEW_MSG", "main", "timer", duration=60) ]) return self.right_keyboard(buttons, callback, reply, inline)
def gen_kb(self): buttons, callback = [], [] if self.task.type == None: self.gen_kb_type() else: buttons.append(["Тип задачи"]) callback.append([query.generate("EDIT_KB", "task", "select_type")]) if self.task.type == 0: buttons.append(["Время начала", "Время окончания"]) callback.append([ query.generate("EDIT_KB", "task", "select_start_time"), query.generate("EDIT_KB", "task", "select_end_time") ]) buttons.append(["Продолжительность"]) callback.append([query.generate("EDIT_KB", "task", "select_duration")]) self.buttons += buttons self.callback += callback
def periodicity(self, type=None): buttons, callback = [], [] if type == None: buttons.append(["&Ежедневно", "Еженедельно"]) callback.append([ self.none_callback(), query.generate("EDIT_KB", "task", "keyboard", task_id=self.task.id, type="periodicity_everyweek") ]) buttons.append(["&Ежемесячно", "&Ежегодно"]) callback.append([self.none_callback(), self.none_callback()]) buttons.append(["Назад"]) callback.append([self.menu_query]) elif type=="everyweek": buttons.append(["SUN", "MON", "TUE", "WED"]) callback.append([self.none_callback(), self.none_callback(), self.none_callback(), self.none_callback()]) buttons.append(["TUE", "FRI", "SAT"]) callback.append([self.none_callback(), self.none_callback(), self.none_callback()]) buttons.append(["Назад"]) callback.append([query.generate("EDIT_KB", "task", "keyboard", task_id=self.task.id, type="periodicity")]) return buttons, callback
def gen_kb_type(self): buttons, callback = [], [] buttons.append(["[hh:mm-time]"]) callback.append( [query.generate("EDIT_KB", "task", "update", task_id=self.task.id, parameter="type", value=0)]) buttons.append(["result-orientation"]) callback.append( [query.generate("EDIT_KB", "task", "update", task_id=self.task.id, parameter="type", value=1)]) buttons.append(["ONE-STEP-JOB"]) callback.append( [query.generate("EDIT_KB", "task", "update", task_id=self.task.id, parameter="type", value=2)]) print(f"\n\n{self.task.type}\n\n") if self.task.type != None: print("okokok") buttons[self.task.type] = ["--"] + buttons[self.task.type] + ["--"] none_callback = query.generate("NOTHING", ".", ".") callback[self.task.type] = [none_callback, none_callback, none_callback] self.buttons += buttons self.callback += callback
def new(self): number = random.randint(1, self.word_count) object = database.table("orthoepy").select("*", "id", number, to_dict=True)[0] word = object["word"] vowels_pos = [ i for i, char in enumerate(word) if char in self.vowels ] buttons = [ word[0:num] + word[num].upper() + word[num + 1:] for num in vowels_pos ] callback = [ query.generate(self.effect, self.module, self.event, user_tid=self.user_tid, word_id=object["id"], answer=bool(i + 1 == object["syllable"])) for i, num in enumerate(vowels_pos) ] return word, keyboard.inline(buttons, callback)
def main_kb(self): buttons, callback = [], [] if self.task.type is None: return self.task_type_kb() elif self.task.type == 0: buttons.append(["Выбор типа задачи"]) callback.append([query.generate("EDIT_KB", "task", "keyboard", task_id=self.task.id, type="task_type")]) buttons.append(["&Время начала", "&Время конца"]) callback.append([ query.generate("EDIT_KB", "task", "keyboard", task_id=self.task.id, type="start_time"), query.generate("EDIT_KB", "task", "keyboard", task_id=self.task.id, type="end_time") ]) buttons.append(["&Продолжительность"]) callback.append([query.generate("EDIT_KB", "task", "keyboard", task_id=self.task.id, type="duration")]) buttons.append(["Периодичность"]) callback.append([query.generate("EDIT_KB", "task", "keyboard", task_id=self.task.id, type="periodicity")]) elif self.task.type == 1: buttons.append(["Выбор типа задачи"]) callback.append([query.generate("EDIT_KB", "task", "keyboard", task_id=self.task.id, type="task_type")]) elif self.task.type == 2: buttons.append(["Выбор типа задачи"]) callback.append([query.generate("EDIT_KB", "task", "keyboard", task_id=self.task.id, type="task_type")]) return buttons, callback
def none_callback(self): return query.generate("NOTHING", ".", ".")
def __init__(self, task): self.task = task self.menu_query = query.generate("EDIT_KB", "task", "keyboard", task_id=self.task.id, type="main") self.none_callback = query.generate("NOTHING", ".", ".")