def done(self, update: Update, state): if update.callback_query is not None and update.callback_query.from_user.id != int(state['u_id']): update.callback_query.answer(text="Меню было вызвано другим пользователем.", show_alert=True) return False if state['a'] == '0': update.callback_query.answer(text="Ты не выбрал занятие.", show_alert=True) return False if int(state['dur']) == 0: update.callback_query.answer(text="Продолжительность не должна быть равна нулю.", show_alert=True) return False activity = DB.get_activity_by_id(state['a']) project = DB.get_active_project(state['u_id'], activity['name']) if project is not None: DB.add_activity(state['u_id'], state['a'], int(state['dur'])/60, project['id']) else: DB.add_activity(state['u_id'], state['a'], int(state['dur'])/60, None) string = "" if project is not None: name = project['name'].replace("_", "\_") name = name.replace("(", "\(") name = name.replace(")", "\)") name = name.replace(".", "\.") name = name.replace("-", "\-") string = "\n📂 *Проект:* _%s_" % name update.callback_query.edit_message_text( text="✅ Ты добавил _{}_ к занятию *{}*\.\n{}".format( self.get_string_by_duration(int(state['dur'])).replace("-", "\-"), DB.get_activity_by_id(int(state['a']))['name'].replace("_", "\_"), string ), parse_mode="MarkdownV2" ) return False
def text_format(self, message_text, update: Update, state): duration = int(state['dur']) name = "Не выбрано" if state['a'] != '0': name = DB.get_activity_by_id(int(state['a']))['name'] return message_text.format( action_name=name, duration_string=self.get_string_by_duration(duration) )
def action_custom_callback(self, update: Update, state): if update.callback_query is not None and update.callback_query.from_user.id != int( state['u_id']): update.callback_query.answer( text="Меню было вызвано другим пользователем.", show_alert=True) return False name = DB.get_activity_by_id(int(state['a']))['name'] self.start_activity(state['u_id'], name, update, delay=int(state['dur'])) return False
def main_menu_format(self, message_text, update: Update, state): project = DB.get_project_by_id(state['p_id']) time = self.get_string_by_duration(float(DB.get_project_time(state['p_id'])['duration'])) is_active = bool(project['active']) name = project['name'].replace("_","\_") # name = name.replace("(", "\(") # name = name.replace(")", "\)") # name = name.replace(".", "\.") # name = name.replace("-", "\-") return message_text.format( project_name=name, activity_name=DB.get_activity_by_id(state['a'])['name'], time=time, status="🟢 *Проект активен*" if is_active else "🔴 *Проект не активен*" )
def start(self, update: Update, context: CallbackContext): temp = update.message.text.split(" ") if len(temp) > 1 and not temp[1].isdigit(): projects = DB.get_user_project_by_query(update.effective_user.id, temp[1]) if len(projects) == 1: project = projects[0] activity_name = DB.get_activity_by_id( project['activity_id'])['name'] self.start_activity.start_activity(update.effective_user.id, activity_name, update, edit=False, project=project) return self.send(update, context) DB.update_user_and_chat(update.message.from_user, update.effective_chat)
def main_menu_format(self, message_text, update: Update, state): activity = DB.get_activity_by_id(state['a']) return message_text.format(activity_name=activity['name'])
def is_without_benefit_hidden(self, state, update): activity = DB.get_activity_by_id(state['a']) return bool(activity['challenge'])
def is_access_for_chat_hidden(self, state, update): activity = DB.get_activity_by_id(state['a']) return activity['access'] != 2