Created
April 10, 2026 07:37
-
-
Save Constrat/b24d5f99906dc2f267ee8914e2ddf56a to your computer and use it in GitHub Desktop.
maa-cli base rotator 9000
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| # maa-rotation.sh | |
| # Runs the next task in task_rotation. State = last completed task name in task_rotation.state. | |
| # On success: advance to next task. On failure: keep same task for next run. | |
| # Manual run: ./maa-rotation.sh <task_name> | |
| set -euo pipefail | |
| HOME="/home/constrat" | |
| export HOME | |
| export PATH="$HOME/android/sdk/platform-tools:/usr/local/bin:/usr/bin:/bin" | |
| readonly MAA_BIN="$HOME/.local/bin/maa" | |
| readonly MAA_CONFIG_DIR="$HOME/.config/maa" | |
| readonly ROTATION_FILE="$MAA_CONFIG_DIR/task_rotation" | |
| readonly STATE_FILE="$MAA_CONFIG_DIR/task_rotation.state" | |
| readonly LOCK_FILE="/tmp/maa-rotation.lock" | |
| readonly TELEGRAM_BOT_TOKEN="[REDACTED]" | |
| readonly TELEGRAM_CHAT_ID="[REDACTED]" | |
| function die { echo "ERROR: $*" >&2; exit 1; } | |
| mapfile -t TASKS < <(grep -E '^[[:alnum:]]+' "$ROTATION_FILE") | |
| (( ${#TASKS[@]} > 0 )) || die "rotation file is empty: $ROTATION_FILE" | |
| exec 9>"$LOCK_FILE" | |
| flock -n 9 || { echo "Already running, exiting." >&2; exit 1; } | |
| if [[ $# -gt 0 ]]; then | |
| TASK="$1" | |
| valid=0 | |
| for t in "${TASKS[@]}"; do [[ "$t" == "$TASK" ]] && { valid=1; break; }; done | |
| (( valid )) || die "unknown task '$TASK'. Valid: ${TASKS[*]}" | |
| else | |
| LAST_TASK=$( [[ -f "$STATE_FILE" ]] && cat "$STATE_FILE" || echo "" ) | |
| NEXT_IDX=0 | |
| for i in "${!TASKS[@]}"; do | |
| if [[ "${TASKS[$i]}" == "$LAST_TASK" ]]; then | |
| NEXT_IDX=$(( (i + 1) % ${#TASKS[@]} )) | |
| break | |
| fi | |
| done | |
| TASK="${TASKS[$NEXT_IDX]}" | |
| fi | |
| echo "[$(date '+%Y-%m-%d %H:%M:%S')] Starting task '$TASK'" | |
| set +e | |
| # test only / dry-run | |
| # SUMMARY=$("$MAA_BIN" run "$TASK" --dry-run -vv) | |
| SUMMARY=$("$MAA_BIN" run "$TASK" -vv) | |
| EXIT_CODE=$? | |
| set -e | |
| printf '%s\n' "$SUMMARY" | |
| TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') | |
| if [[ $EXIT_CODE -eq 0 ]]; then | |
| printf '%s\n' "$TASK" > "$STATE_FILE" | |
| MESSAGE="✅ [MAA] Task $TASK completed at $TIMESTAMP $SUMMARY" | |
| else | |
| MESSAGE="❌ [MAA] Task $TASK FAILED (exit $EXIT_CODE) at $TIMESTAMP $SUMMARY" | |
| fi | |
| curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \ | |
| -d "chat_id=${TELEGRAM_CHAT_ID}" \ | |
| --data-urlencode "text=$MESSAGE" > /dev/null 2>&1 || true | |
| echo "[$TIMESTAMP] $MESSAGE" | |
| exit "$EXIT_CODE" | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment