Here's a new thread for all things related to betbots.
I managed to get one working, with a few trivial tweaks:
<?php
if (!defined('kBitcoinToInt')) define('kBitcoinToInt', 100000000);
require_once('bitcoinURL.php');
require_once('jsonRPCClient.php');
define('kJackpotRatio', 5);
define('kMinSecs', 120);
define('kMaxSecs', 600);
define('kSecsFixed', 120);
header('Refresh: 240');
echo "Jackpot ratio threshold: " . kJackpotRatio . "<br />";
echo "Min secs remaining: " . kMinSecs . "<br />";
echo "Max secs remaining: " . kMaxSecs . "<br />";
try
{
$bitcoin = new jsonRPCClient(kBitcoinURL);
$betPlaced = false;
$soapClient = null;
try
{
$soapClient = @new SoapClient("http://bitponzi.net/API/API.asmx?WSDL",array("exceptions" => 1));
}
catch (SoapFault $E)
{
echo $E->faultstring;
exit();
}
$rounds = $soapClient->getRounds()->getRoundsResult->_Round;
$payoutAddress = $bitcoin->getnewaddress("bet bot ineededausername");
echo "New address created: " . $payoutAddress . "<br />";
foreach ($rounds as $r)
{
$deposits = $soapClient->getDeposits(array("round" => $r->Name))->getDepositsResult->_Deposit;
$jackpotRatio = $r->JP / $r->MinDeposit;
$secsRemaining = $r->Remaining * 60;
echo "<hr />Round ID: " . $r->Name . "<br />Jackpot ratio: $jackpotRatio<br />" . "Secs remaining: $secsRemaining<br/ >";
if ($r->FixedDuration) echo "Fixed duration round.<br />";
// make sure that bet bot wasn't the last to deposit.
$lastConfirmedDeposit = end($deposits);
if ($lastConfirmedDeposit) {
$lastConfirmedPayoutAddr = $lastConfirmedDeposit->PaymentAddress;
echo "Last payment address: " . $lastConfirmedPayoutAddr . "<br />";
echo "Address id: ". $bitcoin->getaccount($lastConfirmedPayoutAddr) . "<br />";
if ('bet bot ineededausername' == $bitcoin->getaccount($lastConfirmedPayoutAddr)) {
echo 'Bet bot is the last depositor<br />';
continue;
}
} else {
echo "Only 1 deposit. <br />";
}
if ($jackpotRatio >= kJackpotRatio && ($secsRemaining < mt_rand(kMinSecs,kMaxSecs))
|| ($secsRemaining < kSecsFixed && $r->FixedDuration)) {
echo "Sniping...<br />";
// Let's not let it expire!
$depositAddress = $soapClient->newDeposit(array( "round" => $r->Name, "bitcoinAddress" => $payoutAddress ))->newDepositResult;
if ($depositAddress[0] != "1") {
echo $depositAddress;
exit();
}
$bitcoin->sendtoaddress($depositAddress, floatval($r->MinDeposit / kBitcoinToInt));
$betPlaced = true;
echo "Bet for " . $r->MinDeposit . " placed for round " . $r->Name .
", jackpot ratio: $jackpotRatio, secs remaining: $secsRemaining<br />";
}
if (!$betPlaced) echo "<hr />No bets were placed.";
}
}
catch (Exception $e)
{
// require_once('MessageLog.inc');
// $msgLog = new MessageLog('errors');
// $msgLog->write('Exception: '.$e->getMessage());
echo $e->getMessage();
}
Make sure to replace my username with your username, or our bots will identify as the same...Known API bugs and other issues:Please note that not all of these are bugs, but they are things to be aware of.
getDeposits returns empty array when there is only 1 deposit PHP does not interpret response as array- Only 128 queries/hr (not a bug, but not documented)
EDIT: Please note that this bot has not made a real deposit from my computer yet.