mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-01-07 14:29:33 +01:00
9d4148ce68
We recently noticed that the way we unpack the call arguments for hooks and notifications in pylightning breaks pretty quickly once you start changing the hook and notification params. If you add params they will not get mapped correctly causing the plugin to error out. This can be fixed by adding a `VAR_KEYWORD` argument to the calbacks, i.e., by adding a single `**kwargs` argument at the end of the signature. This commit adds a check that such a catch-all argument exists, and emits a warning if it doesn't. It also fixes up the plugins that we ship ourselves. Signed-off-by: Christian Decker <decker.christian@gmail.com>
54 lines
1.5 KiB
Python
Executable File
54 lines
1.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
from lightning import Plugin
|
|
import time
|
|
|
|
plugin = Plugin()
|
|
|
|
|
|
@plugin.method("hello")
|
|
def hello(plugin, name="world"):
|
|
"""This is the documentation string for the hello-function.
|
|
|
|
It gets reported as the description when registering the function
|
|
as a method with `lightningd`.
|
|
|
|
"""
|
|
greeting = plugin.get_option('greeting')
|
|
s = '{} {}'.format(greeting, name)
|
|
plugin.log(s)
|
|
return s
|
|
|
|
|
|
@plugin.init()
|
|
def init(options, configuration, plugin, **kwargs):
|
|
plugin.log("Plugin helloworld.py initialized")
|
|
|
|
|
|
@plugin.subscribe("connect")
|
|
def on_connect(plugin, id, address, **kwargs):
|
|
plugin.log("Received connect event for peer {}".format(id))
|
|
|
|
|
|
@plugin.subscribe("disconnect")
|
|
def on_disconnect(plugin, id, **kwargs):
|
|
plugin.log("Received disconnect event for peer {}".format(id))
|
|
|
|
|
|
@plugin.subscribe("invoice_payment")
|
|
def on_payment(plugin, invoice_payment, **kwargs):
|
|
plugin.log("Received invoice_payment event for label {}, preimage {},"
|
|
" and amount of {}".format(invoice_payment.get("label"),
|
|
invoice_payment.get("preimage"),
|
|
invoice_payment.get("msat")))
|
|
|
|
|
|
@plugin.hook("htlc_accepted")
|
|
def on_htlc_accepted(onion, htlc, plugin, **kwargs):
|
|
plugin.log('on_htlc_accepted called')
|
|
time.sleep(20)
|
|
return {'result': 'continue'}
|
|
|
|
|
|
plugin.add_option('greeting', 'Hello', 'The greeting I should use.')
|
|
plugin.run()
|