aboutsummaryrefslogtreecommitdiffstats
path: root/hommaexceli_py/telegram_client.py
diff options
context:
space:
mode:
authorJan Tuomi <jan.tuomi@valuemotive.com>2021-02-14 17:01:19 +0200
committerJan Tuomi <jan.tuomi@valuemotive.com>2021-02-14 17:01:19 +0200
commit54978eb6b515afd1da68642de07e482b09acf9f3 (patch)
treeec310c4a2135be709a7f647e8df9073b5898cd1e /hommaexceli_py/telegram_client.py
parentfbdf6c694b5a92a663eac78230a85a47964a84a1 (diff)
Update last done in Sheets
Diffstat (limited to 'hommaexceli_py/telegram_client.py')
-rw-r--r--hommaexceli_py/telegram_client.py35
1 files changed, 26 insertions, 9 deletions
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...")