Exemplo n.º 1
0
    def initial_state(self, update: Update):
        if update.message.reply_to_message is None:
            text = update.message.text.split()
            if len(text) > 1 and text[1][0] == '@':
                user = DB.get_by_username(text[1][1:])
            else:
                user = DB.get_user_by_id(update.message.from_user.id)
        else:
            print(update.message.reply_to_message.from_user.username)
            user = DB.get_user_by_id(
                update.message.reply_to_message.from_user.id)

        if user is None:
            return {}
        else:
            return {"user_id": user['user_id']}
Exemplo n.º 2
0
    def plot_time_with_benefit(self, user_id, con):
        activities = pd.read_sql_query(
            "SELECT * from activities a JOIN activity_names an ON a.activity_id=an.id WHERE an.challenge=1 AND a.user_id="
            + str(user_id), con)
        # activities = activities.merge(self.activity_names[['id', 'challenge', 'name']], left_on="activity_id", right_on="id",
        #                               how="inner")

        activities['date'] = activities.start_time.apply(
            lambda x: pd.Timestamp(x).strftime("%m-%d-%y"))

        grouped = activities[~activities.activity_id.isin([0, 9])].groupby(
            by=["date", "name"]).duration.sum()

        range_ = pd.date_range(
            end=pd.to_datetime("today").strftime("%m/%d/%y"), periods=14)

        indicies = pd.Series(range_).apply(
            lambda x: pd.Timestamp(x).strftime("%m-%d-%y"))

        sns.set()
        ax = grouped.loc[indicies, :].unstack().plot(kind='bar',
                                                     figsize=(10, 10),
                                                     stacked=True)
        ax.set_xlabel('Дата')
        ax.set_ylabel('Время с пользой (часов)')
        ax.set_title('Время с пользой по дням пользователя %s' %
                     (DB.get_user_by_id(user_id)['username']))
Exemplo n.º 3
0
    def plot_all_time(self, user_id, con):
        activities = pd.read_sql_query(
            "SELECT * from activities a JOIN activity_names an ON a.activity_id=an.id WHERE a.user_id="
            + str(user_id), con)

        activities['date'] = activities.start_time.apply(
            lambda x: pd.Timestamp(x).strftime("%m-%d-%y"))

        grouped = activities[~activities.activity_id.isin([0, 9])].groupby(
            by=["date", "name"]).duration.sum()

        range_ = pd.date_range(
            end=pd.to_datetime("today").strftime("%m/%d/%y"), periods=14)

        indicies = pd.Series(range_).apply(
            lambda x: pd.Timestamp(x).strftime("%m-%d-%y"))

        sns.set()
        ax = grouped.loc[indicies, :].unstack().plot(kind='bar',
                                                     figsize=(10, 10),
                                                     stacked=True)
        ax.set_xlabel('Дата')
        ax.set_ylabel('Время (часов)')
        ax.set_title('Все занятия пользователя %s' %
                     (DB.get_user_by_id(user_id)['username']))
Exemplo n.º 4
0
    def sleep_menu_format(self, message_text, update: Update, state):
        user = DB.get_user_by_id(state['user_id'])

        duration = Data.get_average_sleep_duration(state['user_id'])
        start_sleep = Data.get_average_sleep_start_time(state['user_id'])
        wake_up = Data.get_average_wake_up_time(user['user_id'])

        return message_text.format(
            username=user['username'].replace("_", " "),
            average_duration="_{} ± {}_".format(*duration),
            average_wake_up="_{} ± {}_".format(*wake_up),
            average_sleep_start="_{} ± {}_".format(*start_sleep))
Exemplo n.º 5
0
    def main_menu_format(self, message_text, update: Update, state):
        user = DB.get_user_by_id(state['user_id'])

        active_task = DB.get_active_task_user(user['user_id'])
        task_icon = "🟢" if active_task['active'] else "🔴"

        return message_text.format(
            username=user['username'].replace("_", "\_"),
            task_icon=task_icon,
            active_task=active_task['name'],
            task_time=active_task['time'],
            today=DB.get_user_useful_time(user['user_id'], 'today'),
            week=DB.get_user_useful_time(user['user_id'], 'week'),
            month=DB.get_user_useful_time(user['user_id'], 'month'),
            all=DB.get_user_useful_time(user['user_id'], 'all'))
Exemplo n.º 6
0
    def toggle_tag(self, update: Update, context: CallbackContext):
        user = DB.get_user_by_id(update.message.from_user.id)

        if user['tag']:
            DB.disable_tag(update.message.from_user.id)
            update.message.reply_text(
                "☑️ *Ты выключил теги\. Вернуть можешь командой:*\n"
                "/toggle\_tag",
                parse_mode="MarkdownV2")
        else:
            DB.enable_tag(update.message.from_user.id)
            update.message.reply_text(
                "☑️ *Ты включил теги\. Выключить можешь командой:*\n"
                "/toggle\_tag",
                parse_mode="MarkdownV2")