Untitled

 avatar
unknown
plain_text
10 days ago
2.3 kB
5
Indexable
import json
import logging
from datetime import datetime, timedelta
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, CallbackContext

# File containing tracking numbers
TRACKING_FILE = "tracking.txt"

# Logging configuration
logging.basicConfig(format="%(asctime)s - %(levelname)s - %(message)s", level=logging.INFO)

# Tracking steps
STEPS = ["šŸ“¦ Package ready", "šŸ“® Package dropped off", "šŸšš In transit", "šŸ“ Delivered"]

# Load tracking data from file
def load_tracking():
    try:
        with open(TRACKING_FILE, "r") as file:
            return json.load(file)
    except (FileNotFoundError, json.JSONDecodeError):
        return {}

# Save tracking data to file
def save_tracking(data):
    with open(TRACKING_FILE, "w") as file:
        json.dump(data, file, indent=4)

# Get the current tracking status
def get_tracking_status(tracking_number, tracking_data):
    if tracking_number not in tracking_data:
        return "āŒ Invalid tracking number."

    created_date = datetime.strptime(tracking_data[tracking_number]["created"], "%Y-%m-%d")
    days_elapsed = (datetime.now() - created_date).days
    step_index = min(days_elapsed // 2, len(STEPS) - 1)

    # If the package is delivered, show the delivery address
    status = STEPS[step_index]
    if step_index == len(STEPS) - 1:
        address = tracking_data[tracking_number]["address"]
        status += f"\nšŸ“ Delivery address: {address}"

    return status

# /start command
async def start(update: Update, context: CallbackContext):
    await update.message.reply_text("šŸ” Please enter your tracking number:")

# Handle user input
async def handle_tracking(update: Update, context: CallbackContext):
    tracking_number = update.message.text.strip()
    tracking_data = load_tracking()

    status = get_tracking_status(tracking_number, tracking_data)
    await update.message.reply_text(status)

# Main function to run the bot
def main():
    TOKEN = "YOUR_BOT_TOKEN_HERE"
    app = Application.builder().token(TOKEN).build()

    app.add_handler(CommandHandler("start", start))
    app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_tracking))

    logging.info("Bot started...")
    app.run_polling()

if __name__ == "__main__":
    main()
Leave a Comment