Untitled
unknown
plain_text
10 months ago
2.3 kB
10
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()Editor is loading...
Leave a Comment