mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-20 13:54:36 +01:00
[pylightning] Fix lightning-pay script
This commit is contained in:
parent
d5aaa11373
commit
9a0f3a764c
1 changed files with 30 additions and 11 deletions
|
@ -3,12 +3,14 @@
|
|||
import argparse
|
||||
import os
|
||||
import sys
|
||||
import json
|
||||
from lightning import LightningRpc
|
||||
|
||||
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
||||
parser.add_argument("bolt11_or_destination_id")
|
||||
parser.add_argument("amount_in_milli_satoshi", default=None, type=int, nargs="?")
|
||||
parser.add_argument("payment_hash", nargs="?")
|
||||
parser.add_argument("min_final_cltv_expiry", nargs="?")
|
||||
args = parser.parse_args()
|
||||
|
||||
|
||||
|
@ -23,32 +25,49 @@ rpc_path = os.path.join(default_configdir(), "lightning-rpc")
|
|||
ld = LightningRpc(rpc_path)
|
||||
|
||||
assert len(args.bolt11_or_destination_id) > 2, "argument bolt11_or_destination_id is invalid"
|
||||
prefix = args.bolt11_or_destination_id[:2]
|
||||
|
||||
if prefix == "ln":
|
||||
# Bolt11 passed if prefix is 'ln'
|
||||
use_bolt11 = args.bolt11_or_destination_id[:2] == "ln"
|
||||
|
||||
if use_bolt11:
|
||||
bolt11 = ld.decodepay(args.bolt11_or_destination_id)
|
||||
print("Bolt11 decoded:\n%s" % json.dumps(bolt11, indent=4))
|
||||
id_ = bolt11["payee"]
|
||||
payment_hash = bolt11["payment_hash"]
|
||||
if "msatoshi" in bolt11:
|
||||
amount_included_in_bolt = True
|
||||
amount = bolt11["msatoshi"]
|
||||
else:
|
||||
assert args.amount_in_milli_satoshi, "need argument amount_in_milli_satoshi"
|
||||
amount = args.amount_in_milli_satoshi
|
||||
amount_included_in_bolt = False
|
||||
|
||||
reply = input("Pay %s msatoshi [Y/n]? " % amount)
|
||||
|
||||
if reply in ["y", "Y"]:
|
||||
if amount_included_in_bolt:
|
||||
ld.pay(args.bolt11_or_destination_id)
|
||||
else:
|
||||
ld.pay(args.bolt11_or_destination_id, amount)
|
||||
else:
|
||||
print("Not sending.")
|
||||
|
||||
else:
|
||||
assert args.amount_in_milli_satoshi, "need argument amount_in_milli_satoshi"
|
||||
assert args.payment_hash, "need argument payment_hash"
|
||||
assert args.min_final_cltv_expiry, "need argument min_final_cltv_expiry"
|
||||
amount = args.amount_in_milli_satoshi
|
||||
id_ = args.bolt11_or_destination_id
|
||||
payment_hash = args.payment_hash
|
||||
min_cltv_expiry = args.min_final_cltv_expiry
|
||||
|
||||
route = ld.getroute(id_, amount, 1)
|
||||
route = ld.getroute(id_, amount, 1, min_cltv_expiry)
|
||||
fee = route["route"][0]["msatoshi"] - amount
|
||||
|
||||
fee = route["route"][0]["msatoshi"] - amount
|
||||
reply = input("Paying fee %s on amount %s (%.3f%%). Send [Y/n]? " % (fee, amount, fee / amount * 100.0))
|
||||
|
||||
reply = input("Paying fee %s on amount %s (%.3f%%). Send [Y/n]?" % (fee, amount, fee / amount * 100.0))
|
||||
|
||||
if reply in ["y", "Y"]:
|
||||
ld.sendpay(route["route"], payment_hash)
|
||||
else:
|
||||
print("Not sending.")
|
||||
sys.exit(1)
|
||||
if reply in ["y", "Y"]:
|
||||
ld.sendpay(route["route"], payment_hash)
|
||||
else:
|
||||
print("Not sending.")
|
||||
sys.exit(1)
|
||||
|
|
Loading…
Add table
Reference in a new issue