Add EventBridge scheduling: schedule_reminder, list_reminders, cancel_reminder
This commit is contained in:
29
src/lambdas/scheduler/handler.py
Normal file
29
src/lambdas/scheduler/handler.py
Normal file
@@ -0,0 +1,29 @@
|
||||
"""EventBridge-triggered Lambda: sends a Telegram reminder then deletes the rule."""
|
||||
import json
|
||||
import os
|
||||
import boto3
|
||||
import urllib.request
|
||||
|
||||
|
||||
def handler(event, context):
|
||||
chat_id = event['chat_id']
|
||||
message = event['message']
|
||||
rule_name = event['rule_name']
|
||||
|
||||
# Fetch bot token
|
||||
sm = boto3.client('secretsmanager', region_name='us-east-1')
|
||||
token = sm.get_secret_value(SecretId=os.environ['TELEGRAM_BOT_TOKEN_SECRET_ARN'])['SecretString']
|
||||
|
||||
# Send Telegram message
|
||||
payload = json.dumps({'chat_id': chat_id, 'text': message}).encode()
|
||||
req = urllib.request.Request(
|
||||
f'https://api.telegram.org/bot{token}/sendMessage',
|
||||
data=payload,
|
||||
headers={'Content-Type': 'application/json'},
|
||||
)
|
||||
urllib.request.urlopen(req)
|
||||
|
||||
# Delete the one-time rule
|
||||
eb = boto3.client('events', region_name='us-east-1')
|
||||
eb.remove_targets(Rule=rule_name, Ids=['scheduler'])
|
||||
eb.delete_rule(Name=rule_name)
|
||||
Reference in New Issue
Block a user