mirror of
https://github.com/lnbits/lnbits.git
synced 2025-09-25 11:14:02 +02:00
added webhook and messages
This commit is contained in:
@@ -25,7 +25,8 @@ async def lnurl_response(cp_id):
|
||||
)
|
||||
|
||||
params = resp.dict()
|
||||
params["commentAllowed"] = 300
|
||||
if cp.show_message:
|
||||
params["commentAllowed"] = 300
|
||||
|
||||
return jsonify(params)
|
||||
|
||||
@@ -54,14 +55,17 @@ async def lnurl_callback(cp_id):
|
||||
).dict()
|
||||
),
|
||||
)
|
||||
|
||||
comment = request.args.get("comment")
|
||||
if len(comment or "") > 300:
|
||||
return jsonify(
|
||||
LnurlErrorResponse(
|
||||
reason=f"Got a comment with {len(comment)} characters, but can only accept 300"
|
||||
).dict()
|
||||
)
|
||||
comment = ""
|
||||
if request.args.get("comment"):
|
||||
comment = request.args.get("comment")
|
||||
if len(comment or "") > 300:
|
||||
return jsonify(
|
||||
LnurlErrorResponse(
|
||||
reason=f"Got a comment with {len(comment)} characters, but can only accept 300"
|
||||
).dict()
|
||||
)
|
||||
if len(comment) < 1:
|
||||
comment = "none"
|
||||
|
||||
payment_hash, payment_request = await create_invoice(
|
||||
wallet_id=cp.wallet,
|
||||
@@ -71,7 +75,8 @@ async def lnurl_callback(cp_id):
|
||||
"copilot.api_copilot_hooker",
|
||||
copilot_id=cp_id,
|
||||
amount=int(amount_received / 1000),
|
||||
_external=True,
|
||||
comment=comment,
|
||||
_external=False,
|
||||
),
|
||||
description_hash=hashlib.sha256(
|
||||
(
|
||||
@@ -91,7 +96,8 @@ async def lnurl_callback(cp_id):
|
||||
"copilot.api_copilot_hooker",
|
||||
copilot_id=cp_id,
|
||||
amount=int(amount_received / 1000),
|
||||
_external=True,
|
||||
comment=comment,
|
||||
_external=False,
|
||||
)
|
||||
)
|
||||
return jsonify(resp.dict())
|
||||
|
@@ -93,6 +93,15 @@
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
showNotif: function (userMessage) {
|
||||
this.$q.notify({
|
||||
color: 'purple',
|
||||
html: true,
|
||||
message: '<h2 style="color: white;">' + userMessage + '</h2>',
|
||||
position: 'left',
|
||||
timeout: 5000
|
||||
})
|
||||
},
|
||||
openURL: function (url) {
|
||||
console.log(url)
|
||||
return Quasar.utils.openURL(url)
|
||||
@@ -230,6 +239,9 @@
|
||||
if (res[1].substring(0, 3) == 'htt') {
|
||||
document.getElementById('iframe_main').src = res[1]
|
||||
}
|
||||
if (res[2] != 'none') {
|
||||
this.showNotif(res[2])
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
@@ -1,5 +1,6 @@
|
||||
from quart import g, abort, render_template, jsonify, websocket
|
||||
from http import HTTPStatus
|
||||
import httpx
|
||||
|
||||
from lnbits.decorators import check_user_exists, validate_uuids
|
||||
|
||||
@@ -65,10 +66,13 @@ async def panel(copilot_id):
|
||||
return await render_template("copilot/panel.html", copilot=copilot)
|
||||
|
||||
|
||||
@copilot_ext.route("/api/v1/copilot/hook/<copilot_id>/<amount>/", methods=["GET"])
|
||||
@copilot_ext.route(
|
||||
"/api/v1/copilot/hook/<copilot_id>/<amount>/<comment>", methods=["GET"]
|
||||
)
|
||||
async def api_copilot_hooker(copilot_id, amount):
|
||||
|
||||
data = ""
|
||||
webhook = ""
|
||||
copilot = await get_copilot(copilot_id)
|
||||
|
||||
if not copilot:
|
||||
@@ -76,21 +80,31 @@ async def api_copilot_hooker(copilot_id, amount):
|
||||
jsonify({"message": "Copilot link link does not exist."}),
|
||||
HTTPStatus.NOT_FOUND,
|
||||
)
|
||||
print("got here")
|
||||
if int(copilot.animation1threshold) and int(amount) > copilot.animation1threshold:
|
||||
print("one")
|
||||
data = copilot.animation1
|
||||
if int(copilot.animation2threshold) and int(amount) > copilot.animation2threshold:
|
||||
print("two")
|
||||
webhook = copilot.animation1webhook
|
||||
if (
|
||||
int(copilot.animation2threshold)
|
||||
and int(amount) > copilot.animation2threshold
|
||||
):
|
||||
data = copilot.animation2
|
||||
webhook = copilot.animation1webhook
|
||||
if (
|
||||
int(copilot.animation3threshold)
|
||||
and int(amount) > copilot.animation3threshold
|
||||
):
|
||||
print("three")
|
||||
data = copilot.animation3
|
||||
webhook = copilot.animation1webhook
|
||||
if webhook:
|
||||
async with httpx.AsyncClient() as client:
|
||||
await client.post(
|
||||
webhook,
|
||||
json={
|
||||
copilot,
|
||||
},
|
||||
timeout=40,
|
||||
)
|
||||
global connected_websockets
|
||||
|
||||
connected_websockets[copilot_id] = shortuuid.uuid() + "-" + data
|
||||
connected_websockets[copilot_id] = shortuuid.uuid() + "-" + data + "-" + comment
|
||||
print(connected_websockets)
|
||||
return "", HTTPStatus.OK
|
||||
|
Reference in New Issue
Block a user