update to nostrsdk080

This commit is contained in:
Believethehype 2024-01-19 18:19:28 +01:00
parent b26851337e
commit 0513dcfabd
12 changed files with 57 additions and 57 deletions

View File

@ -68,7 +68,7 @@ def nostr_client():
print("[Nostr Client]: " + event.content())
elif event.kind() == 4:
dec_text = nip04_decrypt(sk, event.pubkey(), event.content())
dec_text = nip04_decrypt(sk, event.author(), event.content())
print("[Nostr Client]: " + f"Received new msg: {dec_text}")
elif event.kind() == 9735:

View File

@ -75,7 +75,7 @@ def nostr_client():
print("[Nostr Client]: " + event.content())
elif event.kind() == 4:
dec_text = nip04_decrypt(sk, event.pubkey(), event.content())
dec_text = nip04_decrypt(sk, event.author(), event.content())
print("[Nostr Client]: " + f"Received new msg: {dec_text}")
elif event.kind() == 9735:

View File

@ -83,12 +83,12 @@ class Bot:
return
def handle_dm(nostr_event):
sender = nostr_event.pubkey().to_hex()
sender = nostr_event.author().to_hex()
if sender == self.keys.public_key().to_hex():
return
try:
decrypted_text = nip04_decrypt(self.keys.secret_key(), nostr_event.pubkey(), nostr_event.content())
decrypted_text = nip04_decrypt(self.keys.secret_key(), nostr_event.author(), nostr_event.content())
user = get_or_add_user(db=self.dvm_config.DB, npub=sender, client=self.client, config=self.dvm_config)
print("[" + self.NAME + "] Message from " + user.name + ": " + decrypted_text)
@ -152,7 +152,7 @@ class Bot:
elif decrypted_text.lower().startswith("balance"):
time.sleep(3.0)
evt = EventBuilder.new_encrypted_direct_msg(self.keys, nostr_event.pubkey(),
evt = EventBuilder.encrypted_direct_msg(self.keys, nostr_event.author(),
"Your current balance is " + str(
user.balance) + " Sats. Zap me to add to your balance. I will use your balance interact with the DVMs for you.\n"
"I support both public and private Zaps, as well as Zapplepay.\n"
@ -172,12 +172,12 @@ class Bot:
else:
time.sleep(2.0)
message = "Error: " + cashu_message + ". Token has not been redeemed."
evt = EventBuilder.new_encrypted_direct_msg(self.keys, PublicKey.from_hex(sender), message,
evt = EventBuilder.encrypted_direct_msg(self.keys, PublicKey.from_hex(sender), message,
None).to_event(self.keys)
send_event(evt, client=self.client, dvm_config=self.dvm_config)
elif decrypted_text.lower().startswith("what's the second best"):
time.sleep(3.0)
evt = EventBuilder.new_encrypted_direct_msg(self.keys, nostr_event.pubkey(),
evt = EventBuilder.encrypted_direct_msg(self.keys, nostr_event.author(),
"No, there is no second best.\n\nhttps://cdn.nostr.build/p/mYLv.mp4",
nostr_event.id()).to_event(self.keys)
send_event(evt, client=self.client, dvm_config=self.dvm_config)
@ -212,7 +212,7 @@ class Bot:
if is_encrypted:
if ptag == self.keys.public_key().to_hex():
tags_str = nip04_decrypt(Keys.from_sk_str(dvm_config.PRIVATE_KEY).secret_key(),
nostr_event.pubkey(), nostr_event.content())
nostr_event.author(), nostr_event.content())
params = json.loads(tags_str)
params.append(Tag.parse(["p", ptag]).as_vec())
params.append(Tag.parse(["encrypted"]).as_vec())
@ -236,17 +236,17 @@ class Bot:
if status == "success" or status == "error" or status == "processing" or status == "partial" and content != "":
entry = next((x for x in self.job_list if x['event_id'] == etag), None)
if entry is not None and entry['dvm_key'] == nostr_event.pubkey().to_hex():
if entry is not None and entry['dvm_key'] == nostr_event.author().to_hex():
user = get_or_add_user(db=self.dvm_config.DB, npub=entry['npub'],
client=self.client, config=self.dvm_config)
time.sleep(2.0)
reply_event = EventBuilder.new_encrypted_direct_msg(self.keys,
reply_event = EventBuilder.encrypted_direct_msg(self.keys,
PublicKey.from_hex(entry['npub']),
content,
None).to_event(self.keys)
print(status + ": " + content)
print(
"[" + self.NAME + "] Received reaction from " + nostr_event.pubkey().to_hex() + " message to orignal sender " + user.name)
"[" + self.NAME + "] Received reaction from " + nostr_event.author().to_hex() + " message to orignal sender " + user.name)
send_event(reply_event, client=self.client, dvm_config=dvm_config)
elif status == "payment-required" or status == "partial":
@ -256,7 +256,7 @@ class Bot:
amount = int(amount_msats / 1000)
entry = next((x for x in self.job_list if x['event_id'] == etag), None)
if entry is not None and entry['is_paid'] is False and entry[
'dvm_key'] == nostr_event.pubkey().to_hex():
'dvm_key'] == nostr_event.author().to_hex():
# if we get a bolt11, we pay and move on
user = get_or_add_user(db=self.dvm_config.DB, npub=entry["npub"],
client=self.client, config=self.dvm_config)
@ -266,7 +266,7 @@ class Bot:
iswhitelisted=user.iswhitelisted, isblacklisted=user.isblacklisted,
nip05=user.nip05, lud16=user.lud16, name=user.name,
lastactive=Timestamp.now().as_secs())
evt = EventBuilder.new_encrypted_direct_msg(self.keys,
evt = EventBuilder.encrypted_direct_msg(self.keys,
PublicKey.from_hex(entry["npub"]),
"Paid " + str(
amount) + " Sats from balance to DVM. New balance is " +
@ -280,7 +280,7 @@ class Bot:
else:
print("Bot payment-required")
time.sleep(2.0)
evt = EventBuilder.new_encrypted_direct_msg(self.keys,
evt = EventBuilder.encrypted_direct_msg(self.keys,
PublicKey.from_hex(entry["npub"]),
"Current balance: " + str(
user.balance) + " Sats. Balance of " + str(
@ -295,7 +295,7 @@ class Bot:
bolt11 = tag.as_vec()[2]
# else we create a zap
else:
user = get_or_add_user(db=self.dvm_config.DB, npub=nostr_event.pubkey().to_hex(),
user = get_or_add_user(db=self.dvm_config.DB, npub=nostr_event.author().to_hex(),
client=self.client, config=self.dvm_config)
print("Paying: " + user.name)
bolt11 = zaprequest(user.lud16, amount, "Zap", nostr_event, self.keys,
@ -332,7 +332,7 @@ class Bot:
entry = next((x for x in self.job_list if x['event_id'] == etag), None)
if entry is not None and entry[
'dvm_key'] == nostr_event.pubkey().to_hex():
'dvm_key'] == nostr_event.author().to_hex():
print(entry)
user = get_or_add_user(db=self.dvm_config.DB, npub=entry['npub'],
client=self.client, config=self.dvm_config)
@ -341,12 +341,12 @@ class Bot:
content = nostr_event.content()
if is_encrypted:
if ptag == self.keys.public_key().to_hex():
content = nip04_decrypt(self.keys.secret_key(), nostr_event.pubkey(), content)
content = nip04_decrypt(self.keys.secret_key(), nostr_event.author(), content)
else:
return
dvms = [x for x in self.dvm_config.SUPPORTED_DVMS if
x.PUBLIC_KEY == nostr_event.pubkey().to_hex() and x.KIND == nostr_event.kind() - 1000]
x.PUBLIC_KEY == nostr_event.author().to_hex() and x.KIND == nostr_event.kind() - 1000]
if len(dvms) > 0:
dvm = dvms[0]
if dvm.dvm_config.EXTERNAL_POST_PROCESS_TYPE != PostProcessFunctionType.NONE:
@ -357,7 +357,7 @@ class Bot:
print("[" + self.NAME + "] Received results, message to orignal sender " + user.name)
time.sleep(1.0)
reply_event = EventBuilder.new_encrypted_direct_msg(self.keys,
reply_event = EventBuilder.encrypted_direct_msg(self.keys,
PublicKey.from_hex(user.npub),
content,
None).to_event(self.keys)
@ -383,8 +383,8 @@ class Bot:
entry = next((x for x in self.job_list if x['event_id'] == etag), None)
print(entry)
# print(entry['dvm_key'])
# print(str(zapped_event.pubkey().to_hex()))
# print(str(zap_event.pubkey().to_hex()))
# print(str(zapped_event.author().to_hex()))
# print(str(zap_event.author().to_hex()))
print(sender)
if entry is not None and entry['is_paid'] is True and entry['dvm_key'] == sender:
# if we get a bolt11, we pay and move on
@ -425,7 +425,7 @@ class Bot:
index += 1
time.sleep(3.0)
evt = EventBuilder.new_encrypted_direct_msg(self.keys, nostr_event.pubkey(),
evt = EventBuilder.encrypted_direct_msg(self.keys, nostr_event.author(),
message + "\nSelect an Index and provide an input ("
"e.g. \"2 A purple ostrich\")\nType \"index info\" to learn "
"more about each DVM. (e.g. \"2 info\")\n\n"
@ -436,7 +436,7 @@ class Bot:
def answer_blacklisted(nostr_event):
# For some reason an admin might blacklist npubs, e.g. for abusing the service
evt = EventBuilder.new_encrypted_direct_msg(self.keys, nostr_event.pubkey(),
evt = EventBuilder.encrypted_direct_msg(self.keys, nostr_event.author(),
"Your are currently blocked from all "
"services.", None).to_event(self.keys)
send_event(evt, client=self.client, dvm_config=dvm_config)
@ -445,10 +445,10 @@ class Bot:
info = print_dvm_info(self.client, index)
time.sleep(2.0)
if info is not None:
evt = EventBuilder.new_encrypted_direct_msg(self.keys, nostr_event.pubkey(),
evt = EventBuilder.encrypted_direct_msg(self.keys, nostr_event.author(),
info, None).to_event(self.keys)
else:
evt = EventBuilder.new_encrypted_direct_msg(self.keys, nostr_event.pubkey(),
evt = EventBuilder.encrypted_direct_msg(self.keys, nostr_event.author(),
"No NIP89 Info found for " +
self.dvm_config.SUPPORTED_DVMS[index].NAME,
None).to_event(self.keys)
@ -463,7 +463,7 @@ class Bot:
if len(split) == 1:
remaining_text = decrypted_text.replace(split[0], "")
params = remaining_text.split(" -")
tag = Tag.parse(["param", "user", nostr_event.pubkey().to_hex()])
tag = Tag.parse(["param", "user", nostr_event.author().to_hex()])
tags.append(tag)
for i in params:
print(i)

View File

@ -89,7 +89,7 @@ class DVM:
if nip90_event is None:
return
user = get_or_add_user(self.dvm_config.DB, nip90_event.pubkey().to_hex(), client=self.client,
user = get_or_add_user(self.dvm_config.DB, nip90_event.author().to_hex(), client=self.client,
config=self.dvm_config)
cashu = ""
p_tag_str = ""
@ -334,12 +334,12 @@ class DVM:
dvm_config=self.dvm_config,
)
if amount > 0 and self.dvm_config.LNBITS_ADMIN_KEY != "":
user = get_or_add_user(self.dvm_config.DB, original_event.pubkey().to_hex(),
user = get_or_add_user(self.dvm_config.DB, original_event.author().to_hex(),
client=self.client, config=self.dvm_config)
print(user.lud16 + " " + str(amount))
bolt11 = zaprequest(user.lud16, amount, "Couldn't finish job, returning sats",
original_event,
self.keys, self.dvm_config, zaptype="private")
original_event, "",
self.keys, self.dvm_config.RELAY_LIST, zaptype="private")
if bolt11 is None:
print("Receiver has no Lightning address, can't zap back.")
return
@ -352,7 +352,7 @@ class DVM:
original_event = Event.from_json(original_event_as_str)
request_tag = Tag.parse(["request", original_event_as_str])
e_tag = Tag.parse(["e", original_event.id().to_hex()])
p_tag = Tag.parse(["p", original_event.pubkey().to_hex()])
p_tag = Tag.parse(["p", original_event.author().to_hex()])
alt_tag = Tag.parse(["alt", "This is the result of a NIP90 DVM AI task with kind " + str(
original_event.kind()) + ". The task was: " + original_event.content()])
status_tag = Tag.parse(["status", "success"])
@ -372,7 +372,7 @@ class DVM:
if encrypted:
print(content)
content = nip04_encrypt(self.keys.secret_key(), PublicKey.from_hex(original_event.pubkey().to_hex()),
content = nip04_encrypt(self.keys.secret_key(), PublicKey.from_hex(original_event.author().to_hex()),
content)
reply_event = EventBuilder(original_event.kind() + 1000, str(content), reply_tags).to_event(self.keys)
@ -389,7 +389,7 @@ class DVM:
alt_description, reaction = build_status_reaction(status, task, amount, content)
e_tag = Tag.parse(["e", original_event.id().to_hex()])
p_tag = Tag.parse(["p", original_event.pubkey().to_hex()])
p_tag = Tag.parse(["p", original_event.author().to_hex()])
alt_tag = Tag.parse(["alt", alt_description])
status_tag = Tag.parse(["status", status])
reply_tags = [e_tag, alt_tag, status_tag]
@ -464,7 +464,7 @@ class DVM:
str_tags.append(element.as_vec())
content = json.dumps(str_tags)
content = nip04_encrypt(self.keys.secret_key(), PublicKey.from_hex(original_event.pubkey().to_hex()),
content = nip04_encrypt(self.keys.secret_key(), PublicKey.from_hex(original_event.author().to_hex()),
content)
reply_tags = encryption_tags
@ -527,7 +527,7 @@ class DVM:
dvm_config=self.dvm_config)
# Zapping back the user on error
if amount > 0 and self.dvm_config.LNBITS_ADMIN_KEY != "":
user = get_or_add_user(self.dvm_config.DB, job_event.pubkey().to_hex(),
user = get_or_add_user(self.dvm_config.DB, job_event.author().to_hex(),
client=self.client, config=self.dvm_config)
print(user.lud16 + " " + str(amount))
bolt11 = zaprequest(user.lud16, amount, "Couldn't finish job, returning sats", job_event, user.npub,

View File

@ -43,7 +43,7 @@ class DiscoverInactiveFollows(DVMTaskInterface):
request_form = {"jobID": event.id().to_hex()}
# default values
user = event.pubkey().to_hex()
user = event.author().to_hex()
since_days = 90
for tag in event.tags():

View File

@ -179,7 +179,7 @@ def update_user_balance(db, npub, additional_sats, client, config):
message = ("Added " + str(additional_sats) + " Sats to balance. New balance is " + str(new_balance) + " Sats.")
evt = EventBuilder.new_encrypted_direct_msg(keys, PublicKey.from_hex(npub), message,
evt = EventBuilder.encrypted_direct_msg(keys, PublicKey.from_hex(npub), message,
None).to_event(keys)
send_event(evt, client=client, dvm_config=config)

View File

@ -50,7 +50,7 @@ def fetch_nip89_paramters_for_deletion(keys, eventid, client, dvmconfig):
print("No dtag found")
return
if event.pubkey().to_hex() == keys.public_key().to_hex():
if event.author().to_hex() == keys.public_key().to_hex():
nip89_delete_announcement(event.id().to_hex(), keys, d_tag, client, dvmconfig)
print("NIP89 announcement deleted from known relays!")
else:
@ -85,11 +85,11 @@ def nip89_fetch_events_pubkey(client, pubkey, kind):
dvms = {}
for event in events:
if dvms.get(event.pubkey().to_hex()):
if dvms.get(event.pubkey().to_hex()).created_at().as_secs() < event.created_at().as_secs():
dvms[event.pubkey().to_hex()] = event
if dvms.get(event.author().to_hex()):
if dvms.get(event.author().to_hex()).created_at().as_secs() < event.created_at().as_secs():
dvms[event.author().to_hex()] = event
else:
dvms[event.pubkey().to_hex()] = event
dvms[event.author().to_hex()] = event
# should be one element of the kind now
for dvm in dvms:

View File

@ -117,7 +117,7 @@ def check_and_decrypt_tags(event, dvm_config):
elif p == dvm_config.PUBLIC_KEY:
tags_str = nip04_decrypt(Keys.from_sk_str(dvm_config.PRIVATE_KEY).secret_key(),
event.pubkey(), event.content())
event.author(), event.content())
params = json.loads(tags_str)
params.append(Tag.parse(["p", p]).as_vec())
params.append(Tag.parse(["encrypted"]).as_vec())
@ -142,12 +142,12 @@ def check_and_decrypt_own_tags(event, dvm_config):
p = tag.as_vec()[1]
if is_encrypted:
if dvm_config.PUBLIC_KEY != event.pubkey().to_hex():
if dvm_config.PUBLIC_KEY != event.author().to_hex():
print("[" + dvm_config.NIP89.NAME + "] Task encrypted and not addressed to this DVM, "
"skipping..")
return None
elif event.pubkey().to_hex() == dvm_config.PUBLIC_KEY:
elif event.author().to_hex() == dvm_config.PUBLIC_KEY:
tags_str = nip04_decrypt(Keys.from_sk_str(dvm_config.PRIVATE_KEY).secret_key(),
PublicKey.from_hex(p), event.content())
params = json.loads(tags_str)

View File

@ -29,7 +29,7 @@ def parse_zap_event_tags(zap_event, keys, name, client, config):
invoice_amount = 0
anon = False
message = ""
sender = zap_event.pubkey()
sender = zap_event.author()
for tag in zap_event.tags():
if tag.as_vec()[0] == 'bolt11':
invoice_amount = parse_amount_from_bolt11_invoice(tag.as_vec()[1])
@ -40,7 +40,7 @@ def parse_zap_event_tags(zap_event, keys, name, client, config):
p_tag = tag.as_vec()[1]
elif tag.as_vec()[0] == 'description':
zap_request_event = Event.from_json(tag.as_vec()[1])
sender = check_for_zapplepay(zap_request_event.pubkey().to_hex(),
sender = check_for_zapplepay(zap_request_event.author().to_hex(),
zap_request_event.content())
for z_tag in zap_request_event.tags():
if z_tag.as_vec()[0] == 'anon':
@ -48,10 +48,10 @@ def parse_zap_event_tags(zap_event, keys, name, client, config):
# print("[" + name + "] Private Zap received.")
decrypted_content = decrypt_private_zap_message(z_tag.as_vec()[1],
keys.secret_key(),
zap_request_event.pubkey())
zap_request_event.author())
decrypted_private_event = Event.from_json(decrypted_content)
if decrypted_private_event.kind() == 9733:
sender = decrypted_private_event.pubkey().to_hex()
sender = decrypted_private_event.author().to_hex()
message = decrypted_private_event.content()
# if message != "":
# print("Zap Message: " + message)
@ -255,7 +255,7 @@ def zaprequest(lud16: str, amount: int, content, zapped_event, zapped_user, keys
relays_tag = Tag.parse(['relays', str(relay_list)])
lnurl_tag = Tag.parse(['lnurl', encoded_lnurl])
if zapped_event is not None:
p_tag = Tag.parse(['p', zapped_event.pubkey().to_hex()])
p_tag = Tag.parse(['p', zapped_event.author().to_hex()])
e_tag = Tag.parse(['e', zapped_event.id().to_hex()])
tags = [amount_tag, relays_tag, p_tag, e_tag, lnurl_tag]
else:
@ -270,7 +270,7 @@ def zaprequest(lud16: str, amount: int, content, zapped_event, zapped_user, keys
zap_request = EventBuilder(9733, content,
[p_tag, e_tag]).to_event(keys).as_json()
keys = Keys.from_sk_str(encryption_key)
encrypted_content = enrypt_private_zap_message(zap_request, keys.secret_key(), zapped_event.pubkey())
encrypted_content = enrypt_private_zap_message(zap_request, keys.secret_key(), zapped_event.author())
anon_tag = Tag.parse(['anon', encrypted_content])
tags.append(anon_tag)
content = ""

View File

@ -1,6 +1,6 @@
from setuptools import setup, find_packages
VERSION = '0.2.0'
VERSION = '0.2.1'
DESCRIPTION = 'A framework to build and run Nostr NIP90 Data Vending Machines'
LONG_DESCRIPTION = ('A framework to build and run Nostr NIP90 Data Vending Machines. '
'This is an early stage release. Interfaces might change/brick')
@ -15,9 +15,9 @@ setup(
long_description=LONG_DESCRIPTION,
packages=find_packages(include=['nostr_dvm', 'nostr_dvm.*']),
install_requires=["nostr-sdk==0.7.1",
install_requires=["nostr-sdk==0.8.0",
"bech32",
"pycryptodome==3.19.0",
"pycryptodome==3.20.0",
"python-dotenv==1.0.0",
"emoji==2.8.0",
"eva-decord==0.6.1",

View File

@ -104,9 +104,9 @@ def init():
listui = []
for event in events:
nip19event = Nip19Event(event.id(), event.pubkey(), dvmconfig.DVMConfig.RELAY_LIST)
nip19event = Nip19Event(event.id(), event.author(), dvmconfig.DVMConfig.RELAY_LIST)
nip19eventid = nip19event.to_bech32()
new = {'result': event.content(), 'author': event.pubkey().to_hex(),
new = {'result': event.content(), 'author': event.author().to_hex(),
'eventid': str(event.id().to_hex()),
'time': str(event.created_at().to_human_datetime()),
'njump': "https://njump.me/" + nip19eventid,

View File

@ -174,7 +174,7 @@ def nostr_client():
print("[Nostr Client]: " + event.content())
elif event.kind() == 4:
dec_text = nip04_decrypt(sk, event.pubkey(), event.content())
dec_text = nip04_decrypt(sk, event.author(), event.content())
print("[Nostr Client]: " + f"Received new msg: {dec_text}")
elif event.kind() == 9735: