Xcodes-Expire-Warning/expire.sh

77 lines
2.8 KiB
Bash

#!/bin/bash
# Function to get the expiration date from Xtream Codes and check if it is less than 10 days away
get_xtream_expiry() {
local panel_url=$1
local username=$2
local password=$3
local bot_token=$4
local chat_id=$5
# API URL
local api_url="${panel_url}/player_api.php"
# Make the API request using curl
response=$(curl -s "${api_url}" --get --data-urlencode "username=${username}" --data-urlencode "password=${password}" --data-urlencode "action=get_account_info")
# Check if jq is available
if ! command -v jq &> /dev/null
then
echo "jq is required but not installed. Please install it using: sudo apt install jq"
exit 1
fi
# Extract the expiration date using jq
expiry_date=$(echo "$response" | jq -r '.user_info.exp_date')
if [ "$expiry_date" != "null" ] && [ -n "$expiry_date" ]; then
# Convert the expiration date from Unix timestamp to human-readable format
expiry_date_readable=$(date -d @"$expiry_date" +"%Y-%m-%d %H:%M:%S")
echo "Expiry Date: $expiry_date_readable"
# Get the current date and expiration date in seconds since epoch
current_date=$(date +%s)
expiry_date_seconds=$(date -d @"$expiry_date" +%s)
# Calculate the difference in days
days_left=$(( (expiry_date_seconds - current_date) / 86400 ))
# Debugging: Print days left
echo "Days Left: $days_left"
# Check if the expiration date has passed
if [ "$days_left" -lt 0 ]; then
echo "The subscription has already expired on $expiry_date_readable. No messages will be sent."
return 0 # Exit the function without sending a message
fi
# Check if it's less than 10 days away
if [ "$days_left" -lt 10 ]; then
echo "The subscription will expire in less than a week ($days_left days left). Sending Telegram alert..."
# Construct the message
message="⚠️ Warning: Your Xtream Codes subscription will expire in $days_left days on $expiry_date_readable."
# Debugging: Print message content
echo "Message: $message"
# Send a message to Telegram using curl
curl -s -X POST "https://api.telegram.org/bot${bot_token}/sendMessage" \
-d chat_id="${chat_id}" \
-d text="${message}" \
-d parse_mode="Markdown"
fi
else
echo "Expiration date not found or is null."
fi
}
# Usage
panel_url="http://your_xtream_panel_url:port"
username="your_username"
password="your_password"
bot_token="your_telegram_bot_token" # Replace with your Telegram bot token
chat_id="your_chat_id" # Replace with your Telegram chat ID
get_xtream_expiry "$panel_url" "$username" "$password" "$bot_token" "$chat_id"