From 54978eb6b515afd1da68642de07e482b09acf9f3 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Sun, 14 Feb 2021 17:01:19 +0200 Subject: Update last done in Sheets --- hommaexceli_py/telegram_client.py | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) (limited to 'hommaexceli_py/telegram_client.py') diff --git a/hommaexceli_py/telegram_client.py b/hommaexceli_py/telegram_client.py index 6d83469..ad1f478 100644 --- a/hommaexceli_py/telegram_client.py +++ b/hommaexceli_py/telegram_client.py @@ -3,10 +3,17 @@ import signal import sys import logging from os import getenv +from typing import Union +from googleapiclient.discovery import Resource from telegram.ext import Updater, CommandHandler, CallbackContext from telegram import Update -from sheets_client import authenticate_and_fetch_sheets_data -from parser import filter_only_this_weeks_rows +from sheets_client import ( + authenticate_sheets, + fetch_sheet_data, + update_sheet_last_done_column, +) +from data_parser import filter_only_this_week, process_rows +from functools import partial chats_mem_cache = set() @@ -23,22 +30,25 @@ def _signal_handler(sig, frame): sys.exit(0) -def _callback_alarm(context: CallbackContext): +def _callback_alarm(context: CallbackContext, sheets_service: Resource): chat_id: int = context.job.context logging.info(f"Authenticating and fetching data from Sheets...") - rows = authenticate_and_fetch_sheets_data() + rows = fetch_sheet_data(sheets_service) logging.info(f"Processing data...") - processed_data = filter_only_this_weeks_rows(rows) + processed_rows = process_rows(rows) + this_weeks_rows = filter_only_this_week(processed_rows) logging.info(f"Sending sheet data to chat id {chat_id}...") message = "Tällä viikolla tehtävät hommat:\n" + "\n".join( - map(lambda task: f"{task[1]} ({task[2]})", processed_data) + map(lambda task: f"{task.name} ({task.interval})", this_weeks_rows) ) context.bot.send_message(chat_id=chat_id, text=message) + update_sheet_last_done_column(sheets_service, processed_rows) -def _callback_timer(update: Update, context: CallbackContext): + +def _callback_timer(update: Update, context: CallbackContext, sheets_service: Resource): chat_id = update.message.chat_id user_id = update.message.from_user.id @@ -55,9 +65,10 @@ def _callback_timer(update: Update, context: CallbackContext): ) chats_mem_cache.add(chat_id) context.job_queue.run_repeating( - _callback_alarm, + partial(_callback_alarm, sheets_service=sheets_service), datetime.timedelta(weeks=1), 1, # run once immediately after 1 sec + name="callback_alarm", context=chat_id, ) @@ -80,13 +91,19 @@ def _stop_timer(update: Update, context: CallbackContext): def run_telegram(): + sheets_service = authenticate_sheets() + tg_token = getenv("TELEGRAM_TOKEN") logging.info("Creating Telegram bot object...") updater = Updater(tg_token) logging.info("Registering Telegram bot /start handler...") updater.dispatcher.add_handler( - CommandHandler("start", _callback_timer, pass_job_queue=True) + CommandHandler( + "start", + partial(_callback_timer, sheets_service=sheets_service), + pass_job_queue=True, + ) ) logging.info("Registering Telegram bot /stop handler...") -- cgit v1.3