Thêm code vào lambda function

Thêm code vào lambda function

  1. Truy cập lại giao diện Lambda function vừa tạo ở bước 3.2
  • Chọn function
  • Chọn function BotTele Create VPC
  1. Tại giao diện code Lambda function

Create VPC

  1. Copy đoạn code sau vào ô code:
import json
import requests
import boto3
from datetime import datetime

client = boto3.resource('dynamodb')

def get_current_month_statistics():
    try:
        table = client.Table('Spend-me')
        response = table.scan()
        total_spend = 0
        total_food_spend = 0
        total_fuel_spend = 0
        current_date = datetime.now()
        current_month = current_date.month
        current_year = current_date.year
        
        for item in response['Items']:
            if 'spend' in item and item['spend'].isdigit():
                spend_amount = int(item['spend'])
            else:
                continue
            
            if 'date' in item and '-' in item['date']:
                date = item['date']
                date_parts = date.split('-')
                if len(date_parts) == 3:
                    item_month = int(date_parts[1])
                    item_year = int(date_parts[2])
                    if item_month != current_month or item_year != current_year:
                        continue
            
            total_spend += spend_amount
            
            if 'spend_name' in item:
                spend_name = item['spend_name'].lower()
                if 'ăn' in spend_name:
                    total_food_spend += spend_amount
                elif 'đổ xăng' in spend_name:
                    total_fuel_spend += spend_amount
        
        return total_spend, total_food_spend, total_fuel_spend
    
    except Exception as e:
        print(f"Error in get_current_month_statistics: {e}")
        raise

def lambda_handler(event, context):
    try:
        body = json.loads(event['body'])
        chat_id = body['message']['chat']['id']
        message_text = body['message']['text']
        
        url = "https://api.telegram.org/bot<bot-token>/sendMessage"
        
        if message_text.startswith('/sum'):
            total_spend, total_food_spend, total_fuel_spend = get_current_month_statistics()
            response_text = (f"Đây là thống kê chi tiết chi tiêu tháng này của bạn:\n"
                             f"Tổng chi tiêu: {total_spend}\n"
                             f"Tổng tiền ăn: {total_food_spend}\n"
                             f"Tổng tiền đổ xăng: {total_fuel_spend}")
        
        elif message_text.startswith('/chi'):
            parts = message_text.split('|')
            if len(parts) == 3:
                spend = int(parts[0].strip().split()[1])  # Extract the amount from the command
                spend_name = parts[1].strip()  # Extract the spend name
                date = parts[2].strip()  # Extract the date
                formatted_date = datetime.strptime(date, '%d-%m-%Y').strftime('%Y-%m-%d')  # Format the date properly
                table = client.Table('<table-name>')
                response = table.put_item(
                    Item={
                        'id': str(datetime.now().timestamp()),
                        'spend': str(spend),
                        'spend_name': spend_name,
                        'date': formatted_date
                    }
                )
                response_text = "Dữ liệu đã ghi vào cơ sở dữ liệu thành công."
            else:
                response_text = "Sai định dạng. Định dạng đúng: /chi 10000 | Mua áo | 12-7-2023"
        elif message_text.startswith('/show'):
            table = client.Table('Spend-me')
            response = table.scan(Limit=5)
            items = response['Items']
            response_text = "Top 5 ghi chép mới nhất:\n"
            for item in items:
                response_text += f"- ID: {item.get('id', 'N/A')}, Spend: {item.get('spend', '0')}, Name: {item.get('spend_name', 'N/A')}, Date: {item.get('date', 'N/A')}\n"
        else:
            response_text = "Lệnh không hợp lệ. Vui lòng sử dụng /chi để nhập chi tiêu hoặc /sum để xem thống kê."
        
        payload = {'chat_id': chat_id, 'text': response_text}
        requests.post(url, json=payload)
        return {"statusCode": 200, "body": json.dumps({"message": "Success"})}
    
    except Exception as e:
        print(f"Error in lambda_handler: {e}")
        return {"statusCode": 500, "body": json.dumps({"message": "Error"})}

Những cái cần sửa:

<bot-token>: token lấy của chatbot tại bước 2

<table-name>: tên bảng Dynamodb đã tạo

Các bạn có thể để id tự tăng hoặc để theo ngày tháng giống mình :))

  1. Nhấn Deploy để lưu code:

Create VPC

  1. Code được lưu thành công

Create VPC