public function run() { $explode = explode(" ", $this->message->content); $prefix = $this->channelConfig->prefix; $system = isset($explode[0]) ? $explode[0] == "{$prefix}pc" ? "global" : str_replace($prefix, "", $explode[0]) : "global"; unset($explode[0]); $item = implode(" ", $explode); // Stuff that doesn't need a db lookup $quickLookUps = ["plex" => array("typeName" => "30 Day Pilot's License Extension (PLEX)", "typeID" => 29668), "injector" => array("typeName" => "Skill Injector", "typeID" => 40520), "extractor" => array("typeName" => "Skill Extractor", "typeID" => 40519)]; if ($system && $item) { if (isset($quickLookUps[$item])) { $single = $quickLookUps[$item]; $multiple = null; } else { $single = $this->db->queryRow("SELECT typeID, typeName FROM invTypes WHERE typeName = :item", array(":item" => $item)); $multiple = $this->db->query("SELECT typeID, typeName FROM invTypes WHERE typeName LIKE :item LIMIT 5", array(":item" => $item)); } if (count($multiple) == 1) { $single = $multiple[0]; } if (empty($single) && !empty($multiple)) { $items = array(); foreach ($multiple as $item) { $items[] = $item["typeName"]; } $items = implode(", ", $items); return $this->message->reply("**Multiple results found:** {$items}"); } // If there is a single result, we'll get data now! if ($single) { $typeID = $single["typeID"]; $typeName = $single["typeName"]; if ($system == "global") { $system = "global"; $data = new SimpleXMLElement($this->curl->get("https://api.eve-central.com/api/marketstat?typeid={$typeID}")); } else { $solarSystemID = $this->db->queryField("SELECT solarSystemID FROM mapSolarSystems WHERE solarSystemName = :system", "solarSystemID", array(":system" => $system)); $data = new SimpleXMLElement($this->curl->get("https://api.eve-central.com/api/marketstat?usesystem={$solarSystemID}&typeid={$typeID}")); } $lowBuy = number_format((double) $data->marketstat->type->buy->min, 2); $avgBuy = number_format((double) $data->marketstat->type->buy->avg, 2); $highBuy = number_format((double) $data->marketstat->type->buy->max, 2); $lowSell = number_format((double) $data->marketstat->type->sell->min, 2); $avgSell = number_format((double) $data->marketstat->type->sell->avg, 2); $highSell = number_format((double) $data->marketstat->type->sell->max, 2); $solarSystemName = $system == "pc" ? "Global" : ucfirst($system); $messageData = "```\ntypeName: {$typeName}\nsolarSystemName: {$solarSystemName}\nBuy:\n Low: {$lowBuy}\n Avg: {$avgBuy}\n High: {$highBuy}\nSell:\n Low: {$lowSell}\n Avg: {$avgSell}\n High: {$highSell}```"; $this->message->reply($messageData); } else { $this->message->reply("**Error:** ***{$item}*** not found"); } } else { $this->message->reply("**Error:** No itemName set.."); } // Mark this as garbage $this->isGarbage(); }
public function run() { $channels = $this->db->query("SELECT * FROM killmailPosting"); foreach ($channels as $channel) { $rowID = $channel["id"]; $type = $channel["typeName"]; $id = $channel["typeID"]; $latest = $channel["latestKillID"]; $channelID = $channel["channelID"]; // Get the killdata $killData = json_decode($this->curl->get("https://evedata.xyz/api/killlist/latest/")); if (!empty($killData)) { foreach ($killData as $kill) { if (isset($kill->killID) && $kill->killID > $latest) { switch ($type) { case "character": if ($kill->victim->characterID == $id) { $msg = "{$kill->victim->characterName} ({$kill->victim->corporationName} / {$kill->victim->allianceName}) lost {$kill->victim->shipTypeName} in {$kill->solarSystemName} ({$kill->regionName}) with a total value of {$kill->totalValue}isk | https://beta.eve-kill.net/kill/{$kill->killID}/"; $this->db->execute("UPDATE killmailPosting SET latestKillID = :killID WHERE id = :rowID", array(":killID" => $kill->killID, ":rowID" => $rowID)); } foreach ($kill->attackers as $attacker) { if ($attacker->characterID == $id && $attacker->finalBlow == 1) { $msg = "{$attacker->characterName} participated in killing {$kill->victim->characterName} ({$kill->victim->corporationName} / {$kill->victim->allianceName} / {$kill->victim->shipTypeName}) in a {$attacker->shipTypeName} doing a total of {$attacker->damageDone} damage, and helped destroy {$kill->totalValue}isk | https://beta.eve-kill.net/kill/{$kill->killID}/"; $this->db->execute("UPDATE killmailPosting SET latestKillID = :killID WHERE id = :rowID", array(":killID" => $kill->killID, ":rowID" => $rowID)); } } break; case "corporation": if ($kill->victim->corporationID == $id) { $msg = "{$kill->victim->characterName} ({$kill->victim->corporationName} / {$kill->victim->allianceName}) lost {$kill->victim->shipTypeName} in {$kill->solarSystemName} ({$kill->regionName}) with a total value of {$kill->totalValue}isk"; $this->db->execute("UPDATE killmailPosting SET latestKillID = :killID WHERE id = :rowID", array(":killID" => $kill->killID, ":rowID" => $rowID)); } foreach ($kill->attackers as $attacker) { if ($attacker->corporationID == $id && $attacker->finalBlow == 1) { $msg = "{$attacker->characterName} participated in killing {$kill->victim->characterName} ({$kill->victim->corporationName} / {$kill->victim->allianceName} / {$kill->victim->shipTypeName}) in a {$attacker->shipTypeName} doing a total of {$attacker->damageDone} damage, and helped destroy {$kill->totalValue}isk | https://beta.eve-kill.net/kill/{$kill->killID}/"; $this->db->execute("UPDATE killmailPosting SET latestKillID = :killID WHERE id = :rowID", array(":killID" => $kill->killID, ":rowID" => $rowID)); } } break; case "alliance": if ($kill->victim->allianceID == $id) { $msg = "{$kill->victim->characterName} ({$kill->victim->corporationName} / {$kill->victim->allianceName}) lost {$kill->victim->shipTypeName} in {$kill->solarSystemName} ({$kill->regionName}) with a total value of {$kill->totalValue}isk"; $this->db->execute("UPDATE killmailPosting SET latestKillID = :killID WHERE id = :rowID", array(":killID" => $kill->killID, ":rowID" => $rowID)); } foreach ($kill->attackers as $attacker) { if ($attacker->allianceID == $id && $attacker->finalBlow == 1) { $msg = "{$attacker->characterName} participated in killing {$kill->victim->characterName} ({$kill->victim->corporationName} / {$kill->victim->allianceName} / {$kill->victim->shipTypeName}) in a {$attacker->shipTypeName} doing a total of {$attacker->damageDone} damage, and helped destroy {$kill->totalValue}isk | https://beta.eve-kill.net/kill/{$kill->killID}/"; $this->db->execute("UPDATE killmailPosting SET latestKillID = :killID WHERE id = :rowID", array(":killID" => $kill->killID, ":rowID" => $rowID)); } } break; } } } if (!empty($msg)) { /** @var Channel $chan */ $chan = Channel::find($channelID); $chan->sendMessage($msg); } } } }