Esempio n. 1
0
    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
Esempio n. 2
0
    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)
        )
Esempio n. 3
0
    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 "🔴 *Проект не активен*"
        )
Esempio n. 5
0
    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)
Esempio n. 6
0
    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