"Item Not Found" ]; } $crime_data = makeAPICall("faction/crimes", array('cat=available', 'offset=0')); var_dump($crime_data); $faction_data = makeAPICall("faction/members", array('striptags=true')); $item_data = makeAPICall("torn/items"); if(empty($crime_data)) { echo "no crimes\n"; exit; } $filteredCrimes = array(); foreach ($crime_data['crimes'] as $crime) { $crime['issues'] = [ 'missing_items' => array(), 'success_chance' => array() ]; foreach ($crime['slots'] as $slot) { if ( $slot['item_requirement']!== null && isset($slot['item_requirement']['is_available']) && $slot['item_requirement']['is_available'] === false && isset($slot['user']['id']) && $slot['user']['id'] !== null ) { array_push($crime['issues']['missing_items'], [ 'position' => $slot['position'], 'user_id' => $slot['user']['id'], 'item_id' => $slot['item_requirement']['id'] ]); } if (isset($slot['user']['id']) && $slot['user']['id'] !== null && $slot['checkpoint_pass_rate'] < $SUCCESS_CHANCE_TRIGGER) { array_push($crime['issues']['success_chance'], [ 'position' => $slot['position'], 'user_id' => $slot['user']['id'], 'success_chance' => $slot['checkpoint_pass_rate'] ]); } } if (!empty($crime['issues']['missing_items']) ||!empty($crime['issues']['success_chance'])) { array_push($filteredCrimes, $crime); } } //print_r($filteredCrimes); if(empty($filteredCrimes)) { if(isset($opts['raw']) && $opts['raw'] === FALSE) { echo "No issues found\n"; } else { updateDiscord(array("No issues found! \u{1F389}", "Praise Negan!"), "POST", "gold"); } exit; } foreach($filteredCrimes as $crime) { $crimetext = ''; $crimetext .= sprintf( "## %s [Lvl %d] (ID: %d)\nhttps://www.torn.com/factions.php?step=your&type=1#/tab=crimes&crimeId=%d\n", $crime['name'], $crime['difficulty'], $crime['id'], $crime['id'] ); if(!empty($crime['issues']['missing_items'])) { $crimetext .="### Missing Items \u{1F6AB}\n"; } foreach($crime['issues']['missing_items'] as $item) { $foundUser = findMember($item['user_id'], $faction_data); $foundItem = findItem($item['item_id'], $item_data); $crimetext .= sprintf( "* **%s** - %s [%d] is missing required item: %s [ID: %d]\n", $item['position'], $foundUser['name'], $item['user_id'], $foundItem['name'], $item['item_id'] ); } if(!empty($crime['issues']['success_chance'])) { $crimetext .= sprintf( "### Low (< %d%%) Success Chance \u{2B07}\u{FE0F}\n", $SUCCESS_CHANCE_TRIGGER ); } foreach($crime['issues']['success_chance'] as $item) { if($item['success_chance'] <= $NEGAN_SHENANIGANS_TRIGGER) { $crimetext .= sprintf( "*NEGAN_SHENANIGANS_TRIGGER currently set at ≤%d%%.\n\n In the unlikely event that Negan did **not** fuck this up, and he is **not** blaming North, the bot has encountered an error:\n\n [ERR_OSI_LAYER_8].\n\n Please inform Dawg who will remediate and advise next steps.*\n\n", $NEGAN_SHENANIGANS_TRIGGER ); break; } } foreach($crime['issues']['success_chance'] as $item) { $foundUser = findMember($item['user_id'], $faction_data); $crimetext .= sprintf( "* **%s** - %s [%d] has only a %d%% chance of success.\n", $item['position'], $foundUser['name'], $item['user_id'], $item['success_chance'] ); } array_push($crimeArray, $crimetext); } if(isset($opts['raw']) && $opts['raw'] === FALSE) { print_r($crimeArray); echo "\n"; } else { updateDiscord($crimeArray, "POST", "red"); } function updateDiscord($msg, $type = "POST", $color = "red") { // Saviors - #membership ??? Why? What is it used for? $webhookurl = "https://discord.com/api/webhooks/1217807184113569902/c41RcapZmUCLXs0kNBvET8s4aRGREflvyGjTXHkXdNRz8UKJucygGh3X7dSnXV5bW-NP"; // Saviors - #dawg-diary $facmanupdate = "https://discord.com/api/webhooks/1223890629054955540/fidmw8hUlZv1LNooyHaK3SomOt4HYJsWj2eg1B8bOgXfHKDRDyyxNmektftqrg_UzsTj"; // Saviors - #organized-crimes $ocupdates = "https://discord.com/api/webhooks/1333418680914022494/3QXI_2vmsDnNdEk5qVZfXiR-HqZ8iNsaqNbH2O5OSTpMIh4ZxAZfGBT5kc8Ozl8JzbcO"; $ocissueschan = "https://discord.com/api/webhooks/1410792243383636051/AeJjJGVQfpT4ej37YlUnG_5Kg0IQTPGzfL19ZnKYV0qu1e6mLgTRUpVjysxOMsf7sK78"; $colors = array( 'green' => 65280, 'red' => 16711680, 'orange' => 16751104, 'gold' => 15844367 ); $embed = array( "embeds" => array( array( "author" => array( "name" => "DawgTools OC Tracker", "icon_url" => "https://torn.scon.es/dawgtools/dawgicon.png", "url" => "https://torn.scon.es/dawgtools/" ), "title" => "OC Issues", "color" => $colors[$color], "description" => (is_array($msg) ? implode("\n", $msg) : $msg), "footer" => array( "text" => "Please note: this code relies on API endpoints marked 'Unstable' by the developers. Changes and updates to the API can be made at any time and break this script. Ping Dawg [2609411] if unexpected things happen.", "icon_url" => "https://cdn-icons-png.flaticon.com/512/595/595067.png" ) ) ) ); $headers = array('Content-Type: application/json'); $ch = curl_init("$ocissueschan"); //$ch = curl_init("$facmanupdate"); curl_setopt( $ch,CURLOPT_CUSTOMREQUEST, 'POST' ); curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers ); curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false ); curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $embed ) ); $response = curl_exec( $ch ); echo "Discord Response: " . print_r(json_decode($response, true)); curl_close( $ch ); } //echo $response; ?>