Untitled
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