def json_parser(req): """ This function is a JSON parser for the reply from the API Edit this, convert_df and pretty_print funtions for output table params KeyWord Arguments: req (json): the HTTP reply to a txid request to API Return: out(list): Output paramters for table """ out_js = json.loads(req.text) fees = network.satoshi_to_currency(out_js['fee'], 'btc') status = out_js['status']['confirmed'] size = out_js['size'] txid = out_js['txid'] rec_addr = out_js['vout'][0]['scriptpubkey_address'] amt_trans = network.satoshi_to_currency(out_js['vout'][0]['value'], 'btc') sen_addr = out_js['vout'][1]['scriptpubkey_address'] final_bal = network.satoshi_to_currency(out_js['vout'][1]['value'], 'btc') out = [ txid, str(size) + " B", fees, status, sen_addr, rec_addr, amt_trans, final_bal ] return out
def get_address(message): current_user_id = message.from_user.id current_wallet = wallet_exist(current_user_id) current_key = Key(current_wallet[1]) solde = decimal.Decimal(current_key.get_balance('btc')) global destinataire if message.text == 'Annuler': msg = bot.send_message( message.chat.id, "Bonjour, voici l'adresse de votre wallet Bitcoin : \n\n```" + current_wallet[0] + "```\n\nUtilisez-la pour réapprovisionner votre porte-feuille Bitcoin.", reply_markup=markup, parse_mode="Markdown") bot.register_next_step_handler(msg, process_step) else: destinataire = str(message.text) if (check_address(destinataire) == False): msg = bot.send_message( message.chat.id, "L'adresse du destinataire est incorrecte !", reply_markup=markup, parse_mode="Markdown") bot.register_next_step_handler(msg, process_step) else: commission = decimal.Decimal(get_fee_cached() * 250 / 100000000) msg = bot.send_message( message.chat.id, "Quelle somme voulez-vous envoyer ?\n\nFonds disponibles : " + str(solde) + " BTC (~" + str( satoshi_to_currency( decimal.Decimal(solde) * decimal.Decimal(100000000), 'eur')) + " EUR).\n\n⚠️ Commission du réseau : " + str('%.6f' % commission) + " BTC (~" + str( satoshi_to_currency( commission * decimal.Decimal(100000000), 'eur')) + " EUR).", reply_markup=markup3, parse_mode="Markdown") bot.register_next_step_handler( msg, lambda msg: get_somme(msg, destinataire))
def get_address(message): current_user_id = message.from_user.id current_wallet = wallet_exist(current_user_id) current_key = Key(current_wallet[1]) solde = decimal.Decimal(current_key.get_balance('btc')) global destinataire if message.text == 'Back': msg = bot.send_message( message.chat.id, "Hello, here is the address of your Bitcoin wallet : \n\n```" + current_wallet[0] + "```\n\nUse it to fund your Bitcoin wallet.", reply_markup=markup, parse_mode="Markdown") bot.register_next_step_handler(msg, process_step) else: destinataire = str(message.text) if (check_address(destinataire) == False): msg = bot.send_message(message.chat.id, "The recipient's address is incorrect!", reply_markup=markup, parse_mode="Markdown") bot.register_next_step_handler(msg, process_step) else: commission = decimal.Decimal(get_fee_cached() * 250 / 100000000) msg = bot.send_message( message.chat.id, "How much do you want to send? \ n \ nFunds available : " + str(solde) + " BTC (~" + str( satoshi_to_currency( decimal.Decimal(solde) * decimal.Decimal(100000000), 'eur')) + " EUR).\n\nРџа№ИЈ Network Commission : " + str('%.6f' % commission) + " BTC (~" + str( satoshi_to_currency( commission * decimal.Decimal(100000000), 'eur')) + " EUR).", reply_markup=markup3, parse_mode="Markdown") bot.register_next_step_handler( msg, lambda msg: get_somme(msg, destinataire))
def process_step(message): current_user_id = message.from_user.id current_wallet = wallet_exist(current_user_id) current_key = Key(current_wallet[1]) solde = decimal.Decimal(current_key.get_balance('btc')) if message.text == '💰 Solde': msg = bot.send_message( message.chat.id, "Adresse de votre wallet Bitcoin : ```" + current_wallet[0] + "```\n\nVous avez " + str(solde) + " BTC (~" + str( satoshi_to_currency( decimal.Decimal(solde) * decimal.Decimal(100000000), 'eur')) + " EUR).", reply_markup=markup, parse_mode="Markdown") bot.register_next_step_handler(message, process_step) elif message.text == '↔️ Retirer': msg = bot.send_message(message.chat.id, "Entrez l'adresse du destinataire", reply_markup=markup3, parse_mode="Markdown") bot.register_next_step_handler(msg, get_address)
def process_step(message): current_user_id = message.from_user.id current_wallet = wallet_exist(current_user_id) current_key = Key(current_wallet[1]) solde = decimal.Decimal(current_key.get_balance('btc')) if message.text == 'Ъњ░ Balance': msg = bot.send_message( message.chat.id, "Address of your Bitcoin wallet : ```" + current_wallet[0] + "```\n\nYou have " + str(solde) + " BTC (~" + str( satoshi_to_currency( decimal.Decimal(solde) * decimal.Decimal(100000000), 'eur')) + " EUR).", reply_markup=markup, parse_mode="Markdown") bot.register_next_step_handler(message, process_step) elif message.text == 'Рєћ№ИЈ Transfer': msg = bot.send_message(message.chat.id, "Enter the recipient's address", reply_markup=markup3, parse_mode="Markdown") bot.register_next_step_handler(msg, get_address)
print(sender) # input recipients' addresses recipient = input(f'Please enter the address where BTC will be sent to {""}') # input btc amount to be sent to the recipient amount = input(f'Please enter the BTC amount to send {""}') # obtain sender account balance in usd ''' Source code: https://ofek.dev/bit/guide/advanced.html ''' btc_balance_usd = satoshi_to_currency( NetworkAPI.get_balance_testnet(f"{sender}"), 'usd') print(btc_balance_usd) # obtain sender account balance in btc btc_balance_btc = satoshi_to_currency( NetworkAPI.get_balance_testnet(f"{sender}"), 'btc') print(btc_balance_btc) # obtain sender's account unspents balance btc_balance_unspents = key.get_unspents() print(btc_balance_unspents)
def get_address_balance(self, address): val = satoshi_to_currency(NetworkAPI.get_balance_testnet(address), 'btc') return float(val)