mirror of
https://github.com/aljazceru/nostrdvm.git
synced 2025-12-20 15:34:26 +01:00
update to sdk 036.1 / 0.37?
This commit is contained in:
@@ -2,11 +2,11 @@ import asyncio
|
||||
import json
|
||||
import os
|
||||
import signal
|
||||
from datetime import timedelta
|
||||
from multiprocessing.connection import Connection
|
||||
|
||||
from nostr_sdk import (Keys, Client, Timestamp, Filter, nip04_decrypt, HandleNotification, EventBuilder, PublicKey,
|
||||
Options, Tag, Event, nip04_encrypt, NostrSigner, EventId, Nip19Event, Kind, KindEnum,
|
||||
UnsignedEvent, UnwrappedGift, uniffi_set_event_loop)
|
||||
from nostr_sdk import (Keys, Timestamp, Filter, nip04_decrypt, HandleNotification, EventBuilder, PublicKey,
|
||||
Options, Tag, Event, nip04_encrypt, EventId, Nip19Event, Kind, KindEnum,
|
||||
UnsignedEvent, UnwrappedGift, uniffi_set_event_loop, ClientBuilder, make_private_msg)
|
||||
|
||||
from nostr_dvm.utils.admin_utils import admin_make_database_updates
|
||||
from nostr_dvm.utils.cashu_utils import redeem_cashu
|
||||
@@ -44,8 +44,8 @@ class Bot:
|
||||
self.keys = Keys.parse(dvm_config.PRIVATE_KEY)
|
||||
self.CHATBOT = False
|
||||
|
||||
opts = (Options().gossip(True))
|
||||
self.client = Client.with_opts(self.keys, opts)
|
||||
opts = Options().gossip(True)
|
||||
self.client = ClientBuilder().signer(self.keys).opts(opts).build()
|
||||
self.invoice_list = []
|
||||
|
||||
pk = self.keys.public_key()
|
||||
@@ -63,9 +63,6 @@ class Bot:
|
||||
for relay in self.dvm_config.RELAY_LIST:
|
||||
await self.client.add_relay(relay)
|
||||
|
||||
await self.client.add_read_relay("wss://relay.nostr.band")
|
||||
await self.client.add_read_relay("wss://relay.damus.io")
|
||||
|
||||
await self.client.connect()
|
||||
|
||||
zap_filter = Filter().pubkey(pk).kinds([EventDefinitions.KIND_ZAP]).since(Timestamp.now())
|
||||
@@ -124,7 +121,6 @@ class Bot:
|
||||
if giftwrap:
|
||||
try:
|
||||
# Extract rumor
|
||||
|
||||
unwrapped_gift = await UnwrappedGift.from_gift_wrap(self.keys, nostr_event)
|
||||
sender = unwrapped_gift.sender().to_hex()
|
||||
rumor: UnsignedEvent = unwrapped_gift.rumor()
|
||||
@@ -194,13 +190,13 @@ class Bot:
|
||||
encrypted_tag = Tag.parse(['encrypted'])
|
||||
# add the encrypted params to the content
|
||||
nip90request = (EventBuilder(self.dvm_config.SUPPORTED_DVMS[index].KIND,
|
||||
encrypted_params, [p_tag, encrypted_tag]).
|
||||
encrypted_params).tags([p_tag, encrypted_tag]).
|
||||
sign_with_keys(self.keys))
|
||||
else:
|
||||
tags.append(p_tag)
|
||||
|
||||
nip90request = (EventBuilder(self.dvm_config.SUPPORTED_DVMS[index].KIND,
|
||||
"", tags).
|
||||
"").tags(tags).
|
||||
sign_with_keys(self.keys))
|
||||
|
||||
# remember in the job_list that we have made an event, if anybody asks for payment,
|
||||
@@ -240,7 +236,10 @@ class Bot:
|
||||
else:
|
||||
message = invoice
|
||||
if giftwrap:
|
||||
await self.client.send_private_msg(PublicKey.parse(sender), message, None)
|
||||
event = await make_private_msg(self.keys, PublicKey.parse(sender), message,
|
||||
None)
|
||||
await self.client.send_event(event)
|
||||
|
||||
else:
|
||||
await send_nip04_dm(self.client, message, PublicKey.parse(sender), self.dvm_config)
|
||||
|
||||
@@ -259,11 +258,11 @@ class Bot:
|
||||
"100 sats (or any other amount) "
|
||||
"to top up your balance")
|
||||
if giftwrap:
|
||||
await self.client.send_private_msg(PublicKey.parse(sender), message, None)
|
||||
event = await make_private_msg(self.keys, PublicKey.parse(sender), message,
|
||||
None)
|
||||
await self.client.send_event(event)
|
||||
else:
|
||||
await send_nip04_dm(self.client, message, PublicKey.parse(sender), self.dvm_config)
|
||||
# await self.client.send_direct_msg(PublicKey.parse(sender), message, None)
|
||||
# await self.client.send_private_msg(PublicKey.parse(sender), message, None)
|
||||
elif decrypted_text.startswith("cashuA"):
|
||||
print("Received Cashu token:" + decrypted_text)
|
||||
cashu_redeemed, cashu_message, total_amount, fees = await redeem_cashu(decrypted_text,
|
||||
@@ -278,14 +277,18 @@ class Bot:
|
||||
message = "Error: " + cashu_message + ". Token has not been redeemed."
|
||||
|
||||
if giftwrap:
|
||||
await self.client.send_private_msg(PublicKey.parse(sender), message, None)
|
||||
event = await make_private_msg(self.keys, PublicKey.parse(sender), message,
|
||||
None)
|
||||
await self.client.send_event(event)
|
||||
else:
|
||||
await send_nip04_dm(self.client, message, PublicKey.parse(sender), self.dvm_config)
|
||||
elif decrypted_text.lower().startswith("what's the second best"):
|
||||
await asyncio.sleep(2.0)
|
||||
message = "No, there is no second best.\n\nhttps://cdn.nostr.build/p/mYLv.mp4"
|
||||
if giftwrap:
|
||||
await self.client.send_private_msg(PublicKey.parse(sender), message, None)
|
||||
event = await make_private_msg(self.keys, PublicKey.parse(sender), message,
|
||||
None)
|
||||
await self.client.send_event(event)
|
||||
else:
|
||||
await send_nip04_dm(self.client, message, PublicKey.parse(sender), self.dvm_config)
|
||||
else:
|
||||
@@ -313,7 +316,7 @@ class Bot:
|
||||
tags.append(p_tag)
|
||||
|
||||
nip90request = (EventBuilder(Kind(kind),
|
||||
"", tags).
|
||||
"").tags(tags).
|
||||
sign_with_keys(self.keys))
|
||||
|
||||
entry = {"npub": user.npub, "event_id": nip90request.id().to_hex(),
|
||||
@@ -379,7 +382,9 @@ class Bot:
|
||||
client=self.client, config=self.dvm_config)
|
||||
await asyncio.sleep(2.0)
|
||||
if entry["giftwrap"]:
|
||||
await self.client.send_private_msg(PublicKey.parse(entry["npub"]), content, None)
|
||||
event = await make_private_msg(self.keys, PublicKey.parse(PublicKey.parse(entry["npub"])), content,
|
||||
None)
|
||||
await self.client.send_event(event)
|
||||
else:
|
||||
await send_nip04_dm(self.client, content, PublicKey.parse(entry['npub']), self.dvm_config)
|
||||
print(status + ": " + content)
|
||||
@@ -408,8 +413,9 @@ class Bot:
|
||||
amount) + " Sats from balance to DVM. New balance is " + str(
|
||||
balance) + " Sats.\n"
|
||||
if entry["giftwrap"]:
|
||||
await self.client.send_private_msg(PublicKey.parse(entry["npub"]), message,
|
||||
None)
|
||||
event = await make_private_msg(self.keys, PublicKey.parse(PublicKey.parse(entry["npub"])), message,
|
||||
None)
|
||||
await self.client.send_event(event)
|
||||
else:
|
||||
await send_nip04_dm(self.client, content, PublicKey.parse(entry['npub']),
|
||||
self.dvm_config)
|
||||
@@ -424,8 +430,9 @@ class Bot:
|
||||
int(amount - user.balance)) + " Sats, then try again."
|
||||
|
||||
if entry["giftwrap"]:
|
||||
await self.client.send_private_msg(PublicKey.parse(entry["npub"]), message,
|
||||
None)
|
||||
event = await make_private_msg(self.keys, PublicKey.parse(PublicKey.parse((entry["npub"]))), message,
|
||||
None)
|
||||
await self.client.send_event(event)
|
||||
else:
|
||||
await send_nip04_dm(self.client, message, PublicKey.parse(entry['npub']),
|
||||
self.dvm_config)
|
||||
@@ -502,7 +509,9 @@ class Bot:
|
||||
print("[" + self.NAME + "] Received results, message to orignal sender " + user.name)
|
||||
await asyncio.sleep(2.0)
|
||||
if entry["giftwrap"]:
|
||||
await self.client.send_private_msg(PublicKey.parse(user.npub), content, None)
|
||||
event = await make_private_msg(self.keys, PublicKey.parse(user.npub), content,
|
||||
None)
|
||||
await self.client.send_event(event)
|
||||
else:
|
||||
await send_nip04_dm(self.client, content, PublicKey.parse(user.npub), self.dvm_config)
|
||||
|
||||
@@ -568,14 +577,16 @@ class Bot:
|
||||
|
||||
text = 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 Type \"balance\" to see your current balance"
|
||||
if giftwrap:
|
||||
await self.client.send_private_msg(PublicKey.parse(sender), text, nostr_event.id())
|
||||
event = await make_private_msg(self.keys, PublicKey.parse(sender), text)
|
||||
await self.client.send_event(event)
|
||||
else:
|
||||
await send_nip04_dm(self.client, text, PublicKey.parse(sender), self.dvm_config)
|
||||
|
||||
async def answer_blacklisted(nostr_event, giftwrap, sender):
|
||||
message = "Your are currently blocked from this service."
|
||||
if giftwrap:
|
||||
await self.client.send_private_msg(PublicKey.parse(sender), message, None)
|
||||
event = await make_private_msg(self.keys, PublicKey.parse(sender), message)
|
||||
await self.client.send_event(event)
|
||||
else:
|
||||
await send_nip04_dm(self.client, message, PublicKey.parse(sender), self.dvm_config)
|
||||
|
||||
@@ -586,7 +597,8 @@ class Bot:
|
||||
await asyncio.sleep(2.0)
|
||||
|
||||
if giftwrap:
|
||||
await self.client.send_private_msg(PublicKey.parse(sender), info, None)
|
||||
event = await make_private_msg(self.keys, PublicKey.parse(sender), info)
|
||||
await self.client.send_event(event)
|
||||
else:
|
||||
await send_nip04_dm(self.client, info, PublicKey.parse(sender), self.dvm_config)
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import os
|
||||
from sys import platform
|
||||
|
||||
from nostr_sdk import PublicKey, Keys, Client, Tag, Event, EventBuilder, Filter, HandleNotification, Timestamp, \
|
||||
LogLevel, Options, nip04_encrypt, Kind, RelayLimits, uniffi_set_event_loop
|
||||
LogLevel, Options, nip04_encrypt, Kind, RelayLimits, uniffi_set_event_loop, ClientBuilder
|
||||
|
||||
from nostr_dvm.utils.admin_utils import admin_make_database_updates, AdminConfig
|
||||
from nostr_dvm.utils.backend_utils import get_amount_per_task, check_task_is_supported, get_task
|
||||
@@ -47,7 +47,8 @@ class DVM:
|
||||
opts = (
|
||||
Options().relay_limits(relaylimits)) #.difficulty(28)
|
||||
|
||||
self.client = Client.with_opts(self.keys, opts)
|
||||
#self.client = Client(self.keys)
|
||||
self.client = ClientBuilder().signer(self.keys).opts(opts).build()
|
||||
self.job_list = []
|
||||
self.jobs_on_hold_list = []
|
||||
pk = self.keys.public_key()
|
||||
@@ -611,7 +612,7 @@ class DVM:
|
||||
content = nip04_encrypt(self.keys.secret_key(), PublicKey.from_hex(original_event.author().to_hex()),
|
||||
content)
|
||||
|
||||
reply_event = EventBuilder(Kind(original_event.kind().as_u16() + 1000), str(content), reply_tags).sign_with_keys(
|
||||
reply_event = EventBuilder(Kind(original_event.kind().as_u16() + 1000), str(content)).tags(reply_tags).sign_with_keys(
|
||||
self.keys)
|
||||
|
||||
# send_event(reply_event, client=self.client, dvm_config=self.dvm_config)
|
||||
@@ -727,7 +728,7 @@ class DVM:
|
||||
content = reaction
|
||||
|
||||
keys = Keys.parse(dvm_config.PRIVATE_KEY)
|
||||
reaction_event = EventBuilder(EventDefinitions.KIND_FEEDBACK, str(content), reply_tags).sign_with_keys(keys)
|
||||
reaction_event = EventBuilder(EventDefinitions.KIND_FEEDBACK, str(content)).tags(reply_tags).sign_with_keys(keys)
|
||||
# send_event(reaction_event, client=self.client, dvm_config=self.dvm_config)
|
||||
await send_event_outbox(reaction_event, client=self.client, dvm_config=self.dvm_config)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import signal
|
||||
from datetime import timedelta
|
||||
|
||||
from nostr_sdk import (Keys, Client, Timestamp, Filter, nip04_decrypt, HandleNotification, EventBuilder, PublicKey,
|
||||
Options, Tag, Event, nip04_encrypt, NostrSigner, EventId, uniffi_set_event_loop)
|
||||
Options, Tag, Event, nip04_encrypt, NostrSigner, EventId, uniffi_set_event_loop, make_private_msg)
|
||||
|
||||
from nostr_dvm.utils.database_utils import fetch_user_metadata
|
||||
from nostr_dvm.utils.definitions import EventDefinitions, relay_timeout
|
||||
@@ -151,7 +151,7 @@ class Subscription:
|
||||
reply_tags = encryption_tags
|
||||
|
||||
keys = Keys.parse(dvm_config.PRIVATE_KEY)
|
||||
reaction_event = EventBuilder(EventDefinitions.KIND_FEEDBACK, str(content), reply_tags).sign_with_keys(keys)
|
||||
reaction_event = EventBuilder(EventDefinitions.KIND_FEEDBACK, str(content)).tags(reply_tags).sign_with_keys(keys)
|
||||
await send_event(reaction_event, client=self.client, dvm_config=self.dvm_config)
|
||||
print("[" + self.dvm_config.NIP89.NAME + "]" + ": Sent Kind " + str(
|
||||
EventDefinitions.KIND_FEEDBACK.as_u16()) + " Reaction: " + "success" + " " + reaction_event.as_json())
|
||||
@@ -209,7 +209,7 @@ class Subscription:
|
||||
tags = [pTag, PTag, eTag, validTag, tierTag, alttag]
|
||||
|
||||
event = EventBuilder(EventDefinitions.KIND_NIP88_PAYMENT_RECIPE,
|
||||
message, tags).sign_with_keys(self.keys)
|
||||
message).tags(tags).sign_with_keys(self.keys)
|
||||
|
||||
dvmconfig = DVMConfig()
|
||||
client = Client(self.keys)
|
||||
@@ -348,7 +348,9 @@ class Subscription:
|
||||
Timestamp.from_secs(end).to_human_datetime().replace("Z", " ").replace("T",
|
||||
" ") + " GMT"))
|
||||
|
||||
self.client.send_private_msg(PublicKey.parse(subscriber), message, None)
|
||||
event = await make_private_msg(self.keys, PublicKey.parse(subscriber), message,
|
||||
None)
|
||||
await self.client.send_event(event)
|
||||
|
||||
|
||||
|
||||
@@ -407,7 +409,9 @@ class Subscription:
|
||||
Timestamp.from_secs(end).to_human_datetime().replace("Z", " ").replace("T",
|
||||
" ")))
|
||||
# await self.client.send_direct_msg(PublicKey.parse(subscription.subscriber), message, None)
|
||||
await self.client.send_private_msg(PublicKey.parse(subscription.subscriber), message, None)
|
||||
event = await make_private_msg(self.keys, PublicKey.parse(subscription.subscriber), message,
|
||||
None)
|
||||
await self.client.send_event(event)
|
||||
|
||||
async def check_subscriptions():
|
||||
try:
|
||||
|
||||
@@ -123,10 +123,10 @@ class DicoverContentLatestLongForm(DVMTaskInterface):
|
||||
filter1 = Filter().kind(definitions.EventDefinitions.KIND_LONGFORM).since(since)
|
||||
events = await cli.database().query([filter1])
|
||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||
print("[" + self.dvm_config.NIP89.NAME + "] Considering " + str(len(events)) + " Events")
|
||||
print("[" + self.dvm_config.NIP89.NAME + "] Considering " + str(len(events.to_vec())) + " Events")
|
||||
ns.finallist = {}
|
||||
index = options["max_results"]
|
||||
for event in events:
|
||||
for event in events.to_vec():
|
||||
if event.created_at().as_secs() > timestamp_hour_ago:
|
||||
ns.finallist[event.id().to_hex()] = index
|
||||
index = index - 1
|
||||
|
||||
@@ -123,10 +123,10 @@ class DicoverContentLatestWiki(DVMTaskInterface):
|
||||
filter1 = Filter().kind(definitions.EventDefinitions.KIND_WIKI).since(since)
|
||||
events = await cli.database().query([filter1])
|
||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||
print("[" + self.dvm_config.NIP89.NAME + "] Considering " + str(len(events)) + " Events")
|
||||
print("[" + self.dvm_config.NIP89.NAME + "] Considering " + str(len(events.to_vec())) + " Events")
|
||||
ns.finallist = {}
|
||||
index = options["max_results"]
|
||||
for event in events:
|
||||
for event in events.to_vec():
|
||||
if event.created_at().as_secs() > timestamp_hour_ago:
|
||||
ns.finallist[event.id().to_hex()] = index
|
||||
index = index - 1
|
||||
|
||||
@@ -117,17 +117,17 @@ class DicoverContentCurrentlyPopular(DVMTaskInterface):
|
||||
|
||||
events = await database.query([filter1])
|
||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||
print("[" + self.dvm_config.NIP89.NAME + "] Considering " + str(len(events)) + " Events")
|
||||
print("[" + self.dvm_config.NIP89.NAME + "] Considering " + str(len(events.to_vec())) + " Events")
|
||||
ns.finallist = {}
|
||||
for event in events:
|
||||
for event in events.to_vec():
|
||||
if event.created_at().as_secs() > timestamp_since:
|
||||
filt = Filter().kinds([definitions.EventDefinitions.KIND_ZAP, definitions.EventDefinitions.KIND_REPOST,
|
||||
definitions.EventDefinitions.KIND_REACTION,
|
||||
definitions.EventDefinitions.KIND_NOTE]).event(event.id()).since(since)
|
||||
reactions = await database.query([filt])
|
||||
|
||||
if len(reactions) >= self.min_reactions:
|
||||
ns.finallist[event.id().to_hex()] = len(reactions)
|
||||
if len(reactions.to_vec()) >= self.min_reactions:
|
||||
ns.finallist[event.id().to_hex()] = len(reactions.to_vec())
|
||||
if len(ns.finallist) == 0:
|
||||
return self.result
|
||||
|
||||
|
||||
@@ -115,20 +115,20 @@ class DicoverContentCurrentlyPopularZaps(DVMTaskInterface):
|
||||
filter1 = Filter().kind(definitions.EventDefinitions.KIND_NOTE).since(since)
|
||||
events = await database.query([filter1])
|
||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||
print("[" + self.dvm_config.NIP89.NAME + "] Considering " + str(len(events)) + " Events")
|
||||
print("[" + self.dvm_config.NIP89.NAME + "] Considering " + str(len(events.to_vec())) + " Events")
|
||||
|
||||
ns.finallist = {}
|
||||
for event in events:
|
||||
for event in events.to_vec():
|
||||
if event.created_at().as_secs() > timestamp_hour_ago:
|
||||
filt = Filter().kinds([definitions.EventDefinitions.KIND_ZAP]).event(event.id()).since(since)
|
||||
zaps = await database.query([filt])
|
||||
invoice_amount = 0
|
||||
event_author = event.author().to_hex()
|
||||
if len(zaps) >= self.min_reactions:
|
||||
if len(zaps.to_vec()) >= self.min_reactions:
|
||||
has_preimage = False
|
||||
has_amount = False
|
||||
overall_amount = 0
|
||||
for zap in zaps:
|
||||
for zap in zaps.to_vec():
|
||||
if event_author == zap.author().to_hex():
|
||||
continue # Skip self zaps..
|
||||
invoice_amount = 0
|
||||
|
||||
@@ -137,18 +137,18 @@ class DicoverContentCurrentlyPopularFollowers(DVMTaskInterface):
|
||||
filter1 = Filter().kind(definitions.EventDefinitions.KIND_NOTE).authors(followings).since(since)
|
||||
events = await cli.database().query([filter1])
|
||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||
print("[" + self.dvm_config.NIP89.NAME + "] Considering " + str(len(events)) + " Events")
|
||||
print("[" + self.dvm_config.NIP89.NAME + "] Considering " + str(len(events.to_vec())) + " Events")
|
||||
|
||||
ns.finallist = {}
|
||||
for event in events:
|
||||
for event in events.to_vec():
|
||||
# if event.created_at().as_secs() > timestamp_since:
|
||||
filt = Filter().kinds(
|
||||
[definitions.EventDefinitions.KIND_ZAP, definitions.EventDefinitions.KIND_REACTION,
|
||||
definitions.EventDefinitions.KIND_REPOST,
|
||||
definitions.EventDefinitions.KIND_NOTE]).event(event.id()).since(since)
|
||||
reactions = await cli.database().query([filt])
|
||||
if len(reactions) >= self.min_reactions:
|
||||
ns.finallist[event.id().to_hex()] = len(reactions)
|
||||
if len(reactions.to_vec()) >= self.min_reactions:
|
||||
ns.finallist[event.id().to_hex()] = len(reactions.to_vec())
|
||||
|
||||
finallist_sorted = sorted(ns.finallist.items(), key=lambda x: x[1], reverse=True)[
|
||||
:int(options["max_results"])]
|
||||
|
||||
@@ -121,16 +121,16 @@ class DicoverContentCurrentlyPopularGallery(DVMTaskInterface):
|
||||
|
||||
ge_events = await databasegallery.query([filter1])
|
||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||
print("[" + self.dvm_config.NIP89.NAME + "] Considering " + str(len(ge_events)) + " Events")
|
||||
print("[" + self.dvm_config.NIP89.NAME + "] Considering " + str(len(ge_events.to_vec())) + " Events")
|
||||
ns.finallist = {}
|
||||
|
||||
ids = []
|
||||
relays = []
|
||||
|
||||
if len(ge_events) == 0:
|
||||
if len(ge_events.to_vec()) == 0:
|
||||
return []
|
||||
|
||||
for ge_event in ge_events:
|
||||
for ge_event in ge_events.to_vec():
|
||||
|
||||
id = None
|
||||
for tag in ge_event.tags().to_vec():
|
||||
@@ -176,7 +176,7 @@ class DicoverContentCurrentlyPopularGallery(DVMTaskInterface):
|
||||
if event.created_at().as_secs() > timestamp_since:
|
||||
filt1 = Filter().kinds([definitions.EventDefinitions.KIND_DELETION]).event(event.id()).limit(1)
|
||||
deletions = await databasegallery.query([filt1])
|
||||
if len(deletions) > 0:
|
||||
if len(deletions.to_vec()) > 0:
|
||||
print("Deleted event, skipping")
|
||||
continue
|
||||
|
||||
@@ -185,13 +185,13 @@ class DicoverContentCurrentlyPopularGallery(DVMTaskInterface):
|
||||
definitions.EventDefinitions.KIND_NOTE]).event(event.id()).since(since)
|
||||
reactions = await databasegallery.query([filt])
|
||||
|
||||
if len(reactions) >= self.min_reactions:
|
||||
if len(reactions.to_vec()) >= self.min_reactions:
|
||||
found = False
|
||||
for ge_event in ge_events:
|
||||
for ge_event in ge_events.to_vec():
|
||||
for tag in ge_event.tags().to_vec():
|
||||
if tag.as_vec()[0] == "e":
|
||||
if event.id().to_hex() == tag.as_vec()[1]:
|
||||
ns.finallist[ge_event.id().to_hex()] = len(reactions)
|
||||
ns.finallist[ge_event.id().to_hex()] = len(reactions.to_vec())
|
||||
found = True
|
||||
break
|
||||
if found:
|
||||
|
||||
@@ -121,10 +121,10 @@ class DicoverContentCurrentlyPopularMostr(DVMTaskInterface):
|
||||
|
||||
events = await database.query([filter1])
|
||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||
print("[" + self.dvm_config.NIP89.NAME + "] Considering " + str(len(events)) + " Events")
|
||||
print("[" + self.dvm_config.NIP89.NAME + "] Considering " + str(len(events.to_vec())) + " Events")
|
||||
ns.finallist = {}
|
||||
|
||||
for event in events:
|
||||
for event in events.to_vec():
|
||||
|
||||
if event.created_at().as_secs() > timestamp_since:
|
||||
filt = Filter().kinds(
|
||||
@@ -133,8 +133,8 @@ class DicoverContentCurrentlyPopularMostr(DVMTaskInterface):
|
||||
EventDefinitions.KIND_NOTE]).event(event.id()).since(since)
|
||||
reactions = await database.query([filt])
|
||||
|
||||
if len(reactions) >= self.min_reactions:
|
||||
ns.finallist[event.id().to_hex()] = len(reactions)
|
||||
if len(reactions.to_vec()) >= self.min_reactions:
|
||||
ns.finallist[event.id().to_hex()] = len(reactions.to_vec())
|
||||
if len(ns.finallist) == 0:
|
||||
return self.result
|
||||
|
||||
|
||||
@@ -185,10 +185,10 @@ class DicoverContentCurrentlyPopularNonFollowers(DVMTaskInterface):
|
||||
|
||||
events = await self.database.query([filter1])
|
||||
|
||||
print("[" + self.dvm_config.NIP89.NAME + "] Considering " + str(len(events)) + " Events")
|
||||
print("[" + self.dvm_config.NIP89.NAME + "] Considering " + str(len(events.to_vec())) + " Events")
|
||||
ns.finallist = {}
|
||||
|
||||
for event in events:
|
||||
for event in events.to_vec():
|
||||
if event.author().to_hex() in followings:
|
||||
continue
|
||||
|
||||
@@ -197,8 +197,8 @@ class DicoverContentCurrentlyPopularNonFollowers(DVMTaskInterface):
|
||||
definitions.EventDefinitions.KIND_REPOST,
|
||||
definitions.EventDefinitions.KIND_NOTE]).event(event.id()).since(since)
|
||||
reactions = await self.database.query([filt])
|
||||
if len(reactions) >= self.min_reactions:
|
||||
ns.finallist[event.id().to_hex()] = len(reactions)
|
||||
if len(reactions.to_vec()) >= self.min_reactions:
|
||||
ns.finallist[event.id().to_hex()] = len(reactions.to_vec())
|
||||
|
||||
print(len(ns.finallist))
|
||||
result_list = []
|
||||
|
||||
@@ -161,10 +161,10 @@ class DicoverContentCurrentlyPopularbyTopic(DVMTaskInterface):
|
||||
|
||||
events = await self.database.query(filters)
|
||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||
print("[" + self.dvm_config.NIP89.NAME + "] Considering " + str(len(events)) + " Events")
|
||||
print("[" + self.dvm_config.NIP89.NAME + "] Considering " + str(len(events.to_vec())) + " Events")
|
||||
ns.finallist = {}
|
||||
|
||||
for event in events:
|
||||
for event in events.to_vec():
|
||||
if all(ele in event.content().lower() for ele in self.must_list):
|
||||
# if any(ele in event.content().lower() for ele in self.search_list):
|
||||
if not any(ele in event.content().lower() for ele in self.avoid_list):
|
||||
@@ -173,8 +173,8 @@ class DicoverContentCurrentlyPopularbyTopic(DVMTaskInterface):
|
||||
definitions.EventDefinitions.KIND_REPOST,
|
||||
definitions.EventDefinitions.KIND_NOTE]).event(event.id()).since(since)
|
||||
reactions = await self.database.query([filt])
|
||||
if len(reactions) >= self.min_reactions:
|
||||
ns.finallist[event.id().to_hex()] = len(reactions)
|
||||
if len(reactions.to_vec()) >= self.min_reactions:
|
||||
ns.finallist[event.id().to_hex()] = len(reactions.to_vec())
|
||||
|
||||
result_list = []
|
||||
finallist_sorted = sorted(ns.finallist.items(), key=lambda x: x[1], reverse=True)[:int(options["max_results"])]
|
||||
|
||||
@@ -4,7 +4,7 @@ import os
|
||||
from datetime import timedelta
|
||||
from threading import Thread
|
||||
|
||||
from nostr_sdk import Client, Timestamp, PublicKey, Tag, Keys, Options, SecretKey, NostrSigner, Kind, RelayLimits
|
||||
from nostr_sdk import Client, Timestamp, PublicKey, Tag, Keys, Options, SecretKey, NostrSigner, Kind, RelayLimits, ClientBuilder
|
||||
|
||||
from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv
|
||||
from nostr_dvm.utils.admin_utils import AdminConfig
|
||||
@@ -76,7 +76,7 @@ class Discoverlatestperfollower(DVMTaskInterface):
|
||||
|
||||
opts = (Options().relay_limits(relaylimits))
|
||||
|
||||
cli = Client.with_opts(keys, opts)
|
||||
cli = ClientBuilder().signer(keys).opts(opts).build()
|
||||
for relay in self.dvm_config.RELAY_LIST:
|
||||
await cli.add_relay(relay)
|
||||
# ropts = RelayOptions().ping(False)
|
||||
|
||||
@@ -91,13 +91,13 @@ class DiscoveryBotFarms(DVMTaskInterface):
|
||||
filter1 = Filter().kind(Kind(0))
|
||||
events = await cli.database().query([filter1])
|
||||
result_list = []
|
||||
print("Events: " + str(len(events)))
|
||||
print("Events: " + str(len(events.to_vec())))
|
||||
|
||||
searchterms = str(options["search"]).split(";")
|
||||
index = 0
|
||||
if len(events) > 0:
|
||||
if len(events.to_vec()) > 0:
|
||||
|
||||
for event in events:
|
||||
for event in events.to_vec():
|
||||
if index < options["max_results"]:
|
||||
try:
|
||||
if any(ext in event.content().lower() for ext in searchterms):
|
||||
|
||||
@@ -2,7 +2,7 @@ import json
|
||||
import os
|
||||
from datetime import timedelta
|
||||
|
||||
from nostr_sdk import Client, Timestamp, PublicKey, Tag, Keys, Options, SecretKey, NostrSigner, Kind, RelayLimits
|
||||
from nostr_sdk import Client, Timestamp, PublicKey, Tag, Keys, Options, SecretKey, NostrSigner, Kind, RelayLimits, ClientBuilder
|
||||
|
||||
from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv
|
||||
from nostr_dvm.utils.admin_utils import AdminConfig
|
||||
@@ -73,7 +73,7 @@ class DiscoverReports(DVMTaskInterface):
|
||||
Options().relay_limits(relaylimits))
|
||||
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
||||
keys = Keys.parse(sk.to_hex())
|
||||
cli = Client.with_opts(keys, opts)
|
||||
cli = ClientBuilder().signer(keys).opts(opts).build()
|
||||
# cli.add_relay("wss://relay.nostr.band")
|
||||
for relay in self.dvm_config.RELAY_LIST:
|
||||
await cli.add_relay(relay)
|
||||
|
||||
@@ -5,7 +5,7 @@ from datetime import timedelta
|
||||
from threading import Thread
|
||||
|
||||
from nostr_sdk import Client, Timestamp, PublicKey, Tag, Keys, Options, SecretKey, NostrSigner, Kind, RelayOptions, \
|
||||
RelayLimits
|
||||
RelayLimits, ClientBuilder
|
||||
|
||||
from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv
|
||||
from nostr_dvm.utils.admin_utils import AdminConfig
|
||||
@@ -76,7 +76,7 @@ class DiscoverInactiveFollows(DVMTaskInterface):
|
||||
|
||||
opts = (Options().relay_limits(relaylimits))
|
||||
|
||||
cli = Client.with_opts(keys, opts)
|
||||
cli = ClientBuilder().signer(keys).opts(opts).build()
|
||||
for relay in self.dvm_config.RELAY_LIST:
|
||||
await cli.add_relay(relay)
|
||||
await cli.add_relay("wss://nostr.band")
|
||||
|
||||
@@ -5,7 +5,7 @@ from datetime import timedelta
|
||||
from threading import Thread
|
||||
|
||||
from nostr_sdk import Client, PublicKey, Tag, Keys, Options, SecretKey, NostrSigner, Kind, RelayOptions, \
|
||||
RelayLimits
|
||||
RelayLimits, ClientBuilder
|
||||
|
||||
from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv
|
||||
from nostr_dvm.utils.admin_utils import AdminConfig
|
||||
@@ -68,7 +68,8 @@ class DiscoverNonFollowers(DVMTaskInterface):
|
||||
relaylimits))
|
||||
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
||||
keys = Keys.parse(sk.to_hex())
|
||||
cli = Client.with_opts(keys, opts)
|
||||
cli= ClientBuilder().signer(keys).opts(opts).build()
|
||||
|
||||
# cli.add_relay("wss://relay.nostr.band")
|
||||
for relay in self.dvm_config.RELAY_LIST:
|
||||
await cli.add_relay(relay)
|
||||
|
||||
@@ -248,8 +248,8 @@ async def analyse_users(user_ids=None, dunbar=100000000):
|
||||
followers_filter = Filter().authors(user_keys).kind(Kind(3))
|
||||
followers = await database.query([followers_filter])
|
||||
allfriends = []
|
||||
if len(followers) > 0:
|
||||
for follower in followers:
|
||||
if len(followers.to_vec()) > 0:
|
||||
for follower in followers.to_vec():
|
||||
frens = []
|
||||
if len(follower.tags().to_vec()) < dunbar:
|
||||
for tag in follower.tags().to_vec():
|
||||
|
||||
@@ -253,8 +253,8 @@ async def analyse_users(user_ids=None, dunbar=100000000):
|
||||
followers_filter = Filter().authors(user_keys).kind(Kind(3))
|
||||
followers = await database.query([followers_filter])
|
||||
allfriends = []
|
||||
if len(followers) > 0:
|
||||
for follower in followers:
|
||||
if len(followers.to_vec()) > 0:
|
||||
for follower in followers.to_vec():
|
||||
frens = []
|
||||
if len(follower.tags().to_vec()) < dunbar:
|
||||
for tag in follower.tags().to_vec():
|
||||
|
||||
@@ -95,11 +95,11 @@ class SearchUser(DVMTaskInterface):
|
||||
events = await cli.database().query([filter1])
|
||||
|
||||
result_list = []
|
||||
print("Events: " + str(len(events)))
|
||||
print("Events: " + str(len(events.to_vec())))
|
||||
index = 0
|
||||
if len(events) > 0:
|
||||
if len(events.to_vec()) > 0:
|
||||
|
||||
for event in events:
|
||||
for event in events.to_vec():
|
||||
if index < options["max_results"]:
|
||||
try:
|
||||
if options["search"].lower() in event.content().lower():
|
||||
|
||||
@@ -5,7 +5,7 @@ from dataclasses import dataclass
|
||||
from logging import Filter
|
||||
from sqlite3 import Error
|
||||
|
||||
from nostr_sdk import Timestamp, Keys, PublicKey, Filter, Kind
|
||||
from nostr_sdk import Timestamp, Keys, PublicKey, Filter, Kind, make_private_msg
|
||||
|
||||
from nostr_dvm.utils.definitions import relay_timeout
|
||||
from nostr_dvm.utils.nostr_utils import send_nip04_dm
|
||||
@@ -192,7 +192,9 @@ async def update_user_balance(db, npub, additional_sats, client, config, giftwra
|
||||
|
||||
# always send giftwrapped. sorry not sorry.
|
||||
#if giftwrap:
|
||||
await client.send_private_msg(PublicKey.parse(npub), message, None)
|
||||
event = await make_private_msg(keys, PublicKey.parse(npub), message,
|
||||
None)
|
||||
await client.send_event(event)
|
||||
#else:
|
||||
# await send_nip04_dm(client, message, PublicKey.parse(npub), config)
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ from nostr_dvm.utils.print_utils import bcolors
|
||||
async def gallery_announce_list(tags, dvm_config, client):
|
||||
keys = Keys.parse(dvm_config.NIP89.PK)
|
||||
content = ""
|
||||
event = EventBuilder(Kind(10011), content, tags).sign_with_keys(keys)
|
||||
event = EventBuilder(Kind(10011), content).tags(tags).sign_with_keys(keys)
|
||||
eventid = await send_event(event, client=client, dvm_config=dvm_config)
|
||||
|
||||
print(
|
||||
|
||||
@@ -15,9 +15,9 @@ async def announce_dm_relays(dvm_config, client):
|
||||
keys = Keys.parse(dvm_config.NIP89.PK)
|
||||
content = ""
|
||||
|
||||
event = EventBuilder(Kind(10050), content, tags).sign_with_keys(keys)
|
||||
event = EventBuilder(Kind(10050), content).tags(tags).sign_with_keys(keys)
|
||||
eventid = await send_event(event, client=client, dvm_config=dvm_config)
|
||||
if (eventid is not None):
|
||||
if eventid is not None:
|
||||
print(
|
||||
bcolors.BLUE + "[" + dvm_config.NIP89.NAME + "] Announced DM relays for " + dvm_config.NIP89.NAME + " (EventID: " + str(
|
||||
eventid.id.to_hex()) + ")" + bcolors.ENDC)
|
||||
@@ -39,9 +39,9 @@ async def nip65_announce_relays(dvm_config, client):
|
||||
keys = Keys.parse(dvm_config.NIP89.PK)
|
||||
content = ""
|
||||
|
||||
event = EventBuilder(EventDefinitions.KIND_RELAY_ANNOUNCEMENT, content, tags).sign_with_keys(keys)
|
||||
event = EventBuilder(EventDefinitions.KIND_RELAY_ANNOUNCEMENT, content).tags(tags).sign_with_keys(keys)
|
||||
eventid = await send_event(event, client=client, dvm_config=dvm_config)
|
||||
if (eventid is not None):
|
||||
if eventid is not None:
|
||||
print(
|
||||
bcolors.BLUE + "[" + dvm_config.NIP89.NAME + "] Announced NIP 65 for " + dvm_config.NIP89.NAME + " (EventID: " + str(
|
||||
eventid.id.to_hex()) + ")" + bcolors.ENDC)
|
||||
|
||||
@@ -83,7 +83,7 @@ async def nip88_delete_announcement(eid: str, keys: Keys, dtag: str, client: Cli
|
||||
e_tag = Tag.parse(["e", eid])
|
||||
a_tag = Tag.parse(
|
||||
["a", str(EventDefinitions.KIND_NIP88_TIER_EVENT) + ":" + keys.public_key().to_hex() + ":" + dtag])
|
||||
event = EventBuilder(Kind(5), "", [e_tag, a_tag]).sign_with_keys(keys)
|
||||
event = EventBuilder(Kind(5), "").tags([e_tag, a_tag]).sign_with_keys(keys)
|
||||
await send_event(event, client, config)
|
||||
|
||||
|
||||
@@ -176,7 +176,7 @@ async def nip88_announce_tier(dvm_config, client):
|
||||
|
||||
keys = Keys.parse(dvm_config.NIP89.PK)
|
||||
content = dvm_config.NIP88.CONTENT
|
||||
event = EventBuilder(EventDefinitions.KIND_NIP88_TIER_EVENT, content, tags).sign_with_keys(keys)
|
||||
event = EventBuilder(EventDefinitions.KIND_NIP88_TIER_EVENT, content).tags(tags).sign_with_keys(keys)
|
||||
annotier_id = await send_event(event, client=client, dvm_config=dvm_config)
|
||||
|
||||
if dvm_config.NIP89 is not None:
|
||||
|
||||
@@ -29,7 +29,7 @@ async def nip89_announce_tasks(dvm_config, client):
|
||||
d_tag = Tag.parse(["d", dvm_config.NIP89.DTAG])
|
||||
keys = Keys.parse(dvm_config.NIP89.PK)
|
||||
content = dvm_config.NIP89.CONTENT
|
||||
event = EventBuilder(EventDefinitions.KIND_ANNOUNCEMENT, content, [k_tag, d_tag]).sign_with_keys(keys)
|
||||
event = EventBuilder(EventDefinitions.KIND_ANNOUNCEMENT, content).tags([k_tag, d_tag]).sign_with_keys(keys)
|
||||
eventid = await send_event(event, client=client, dvm_config=dvm_config)
|
||||
|
||||
print(
|
||||
@@ -65,7 +65,7 @@ async def nip89_delete_announcement(eid: str, keys: Keys, dtag: str, client: Cli
|
||||
e_tag = Tag.parse(["e", eid])
|
||||
a_tag = Tag.parse(
|
||||
["a", str(EventDefinitions.KIND_ANNOUNCEMENT.as_u16()) + ":" + keys.public_key().to_hex() + ":" + dtag])
|
||||
event = EventBuilder(Kind(5), "", [e_tag, a_tag]).sign_with_keys(keys)
|
||||
event = EventBuilder(Kind(5), "").tags([e_tag, a_tag]).sign_with_keys(keys)
|
||||
print(f"POW event: {event.as_json()}")
|
||||
await send_event(event, client, config)
|
||||
|
||||
@@ -74,7 +74,7 @@ async def nip89_delete_announcement_pow(eid: str, keys: Keys, dtag: str, client:
|
||||
e_tag = Tag.parse(["e", eid])
|
||||
a_tag = Tag.parse(
|
||||
["a", str(EventDefinitions.KIND_ANNOUNCEMENT.as_u16()) + ":" + keys.public_key().to_hex() + ":" + dtag])
|
||||
event = EventBuilder(Kind(5), "", [e_tag, a_tag]).pow(28).sign_with_keys(keys)
|
||||
event = EventBuilder(Kind(5), "").tags([e_tag, a_tag]).pow(28).sign_with_keys(keys)
|
||||
print(f"POW event: {event.as_json()}")
|
||||
await send_event(event, client, config)
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ async def generate_nip98_header(pkeys_hex, url="", kind="POST", filepath=""):
|
||||
if kind == "POST":
|
||||
payloadtag = Tag.parse(["payload", sha256sum(filepath)])
|
||||
tags.append(payloadtag)
|
||||
eb = EventBuilder(Kind(27235), "", tags)
|
||||
eb = EventBuilder(Kind(27235), "").tags(tags)
|
||||
event = eb.sign_with_keys(keys)
|
||||
|
||||
encoded_nip98_event = base64.b64encode(event.as_json().encode('utf-8')).decode('utf-8')
|
||||
|
||||
@@ -6,8 +6,8 @@ from typing import List
|
||||
|
||||
import dotenv
|
||||
from nostr_sdk import Filter, Client, Alphabet, EventId, Event, PublicKey, Tag, Keys, nip04_decrypt, Metadata, Options, \
|
||||
Nip19Event, SingleLetterTag, RelayLimits, SecretKey, NostrSigner, Connection, ConnectionTarget, \
|
||||
EventSource, EventBuilder, Kind
|
||||
Nip19Event, SingleLetterTag, RelayLimits, SecretKey, Connection, ConnectionTarget, \
|
||||
EventBuilder, Kind, ClientBuilder, SendEventOutput
|
||||
|
||||
from nostr_dvm.utils.definitions import EventDefinitions, relay_timeout
|
||||
|
||||
@@ -33,8 +33,7 @@ async def get_event_by_id(event_id_str: str, client: Client, config=None) -> Eve
|
||||
|
||||
|
||||
async def get_events_async(client, filter, timeout):
|
||||
source_l = EventSource.relays(timedelta(seconds=timeout))
|
||||
events = await client.fetch_events([filter], source_l)
|
||||
events = await client.fetch_events([filter], timedelta(seconds=timeout))
|
||||
return events.to_vec()
|
||||
|
||||
|
||||
@@ -183,7 +182,7 @@ async def get_main_relays(event_to_send: Event, client: Client, dvm_config):
|
||||
return []
|
||||
|
||||
|
||||
async def send_event_outbox(event: Event, client, dvm_config) -> EventId:
|
||||
async def send_event_outbox(event: Event, client, dvm_config) -> SendEventOutput | None:
|
||||
# 1. OK, Let's overcomplicate things.
|
||||
# 2. If our event has a relays tag, we just send the event to these relay in the classical way.
|
||||
relays = []
|
||||
@@ -208,6 +207,9 @@ async def send_event_outbox(event: Event, client, dvm_config) -> EventId:
|
||||
print("[" + dvm_config.NIP89.NAME + "] No Inbox found, replying to generic relays")
|
||||
relays = await get_main_relays(event, client, dvm_config)
|
||||
|
||||
|
||||
if len(relays) == 0:
|
||||
return
|
||||
# eventid = await send_event(event, client, dvm_config)
|
||||
# return eventid
|
||||
|
||||
@@ -215,10 +217,10 @@ async def send_event_outbox(event: Event, client, dvm_config) -> EventId:
|
||||
relaylimits = RelayLimits.disable()
|
||||
connection = Connection().embedded_tor().target(ConnectionTarget.ONION)
|
||||
# connection = Connection().addr("127.0.0.1:9050").target(ConnectionTarget.ONION)
|
||||
opts = Options().relay_limits(relaylimits).connection(connection).connection_timeout(timedelta(seconds=30))
|
||||
opts = Options().relay_limits(relaylimits).connection(connection).timeout(timedelta(seconds=5))
|
||||
sk = SecretKey.from_hex(dvm_config.PRIVATE_KEY)
|
||||
keys = Keys.parse(sk.to_hex())
|
||||
outboxclient = Client.with_opts(keys, opts)
|
||||
outboxclient = ClientBuilder().signer(keys).opts(opts).build()
|
||||
print("[" + dvm_config.NIP89.NAME + "] Receiver Inbox relays: " + str(relays))
|
||||
|
||||
for relay in relays[:5]:
|
||||
@@ -236,32 +238,23 @@ async def send_event_outbox(event: Event, client, dvm_config) -> EventId:
|
||||
event_id = None
|
||||
print(e)
|
||||
|
||||
for relay in relays[:5]:
|
||||
try:
|
||||
await outboxclient.force_remove_relay(relay)
|
||||
except:
|
||||
print("Error removing relay: " + relay)
|
||||
|
||||
# 5. Fallback, if we couldn't send the event to any relay, we try to send to generic relays instead.
|
||||
if event_id is None:
|
||||
relays = await get_main_relays(event, client, dvm_config)
|
||||
if len(relays) == 0:
|
||||
return None
|
||||
for relay in relays:
|
||||
await outboxclient.add_relay(relay)
|
||||
try:
|
||||
await outboxclient.connect()
|
||||
event_id = await outboxclient.send_event(event)
|
||||
for relay in relays:
|
||||
try:
|
||||
await outboxclient.force_remove_relay(relay)
|
||||
except:
|
||||
print("Error removing relay: " + relay)
|
||||
except Exception as e:
|
||||
# Love yourself then.
|
||||
event_id = None
|
||||
print(e)
|
||||
await outboxclient.remove_all_relays()
|
||||
await outboxclient.disconnect()
|
||||
|
||||
await outboxclient.shutdown()
|
||||
|
||||
return event_id
|
||||
|
||||
|
||||
@@ -413,7 +406,7 @@ async def send_nip04_dm(client: Client, msg, receiver: PublicKey, dvm_config):
|
||||
keys = Keys.parse(dvm_config.PRIVATE_KEY)
|
||||
content = await keys.nip04_encrypt(receiver, msg)
|
||||
ptag = Tag.parse(["p", receiver.to_hex()])
|
||||
event = EventBuilder(Kind(4), content, [ptag]).sign_with_keys(Keys.parse(dvm_config.PRIVATE_KEY))
|
||||
event = EventBuilder(Kind(4), content).tags([ptag]).sign_with_keys(Keys.parse(dvm_config.PRIVATE_KEY))
|
||||
await client.send_event(event)
|
||||
|
||||
# relays = await get_dm_relays(event, client, dvm_config)
|
||||
|
||||
@@ -9,7 +9,7 @@ from nostr_sdk import Tag, Keys, nip44_encrypt, nip44_decrypt, Nip44Version, Eve
|
||||
EventId, nip04_decrypt, nip04_encrypt, PublicKey, Metadata
|
||||
|
||||
from nostr_dvm.utils.database_utils import fetch_user_metadata
|
||||
from nostr_dvm.utils.definitions import EventDefinitions, relay_timeout, relay_timeout_long
|
||||
from nostr_dvm.utils.definitions import EventDefinitions
|
||||
from nostr_dvm.utils.dvmconfig import DVMConfig
|
||||
from nostr_dvm.utils.nostr_utils import check_and_set_private_key
|
||||
from nostr_dvm.utils.print_utils import bcolors
|
||||
@@ -103,7 +103,7 @@ class NutZapWallet:
|
||||
relay_tag = Tag.parse(["relay", relay])
|
||||
tags.append(relay_tag)
|
||||
|
||||
event = EventBuilder(EventDefinitions.KIND_NUT_WALLET, content, tags).sign_with_keys(keys)
|
||||
event = EventBuilder(EventDefinitions.KIND_NUT_WALLET, content).tags(tags).sign_with_keys(keys)
|
||||
send_response = await client.send_event(event)
|
||||
|
||||
print(
|
||||
@@ -327,7 +327,7 @@ class NutZapWallet:
|
||||
p_tag = Tag.parse(["p", sender_hex])
|
||||
tags.append(p_tag)
|
||||
|
||||
event = EventBuilder(Kind(7376), content, tags).sign_with_keys(keys)
|
||||
event = EventBuilder(Kind(7376), content).tags(tags).sign_with_keys(keys)
|
||||
eventid = await client.send_event(event)
|
||||
|
||||
async def create_unspent_proof_event(self, nut_wallet: NutWallet, mint_proofs, mint_url, amount, direction, marker,
|
||||
@@ -373,7 +373,7 @@ class NutZapWallet:
|
||||
else:
|
||||
content = nip44_encrypt(keys.secret_key(), keys.public_key(), message, Nip44Version.V2)
|
||||
|
||||
event = EventBuilder(Kind(7375), content, tags).sign_with_keys(keys)
|
||||
event = EventBuilder(Kind(7375), content).tags(tags).sign_with_keys(keys)
|
||||
eventid = await client.send_event(event)
|
||||
await self.create_transaction_history_event(nut_wallet, amount, nut_wallet.unit, old_event_id, eventid.id,
|
||||
direction, marker, sender_hex, event_hex, client, keys)
|
||||
@@ -436,7 +436,7 @@ class NutZapWallet:
|
||||
pubkey = Keys.parse(nut_wallet.privkey).public_key().to_hex()
|
||||
tags.append(Tag.parse(["pubkey", pubkey]))
|
||||
|
||||
event = EventBuilder(Kind(10019), "", tags).sign_with_keys(keys)
|
||||
event = EventBuilder(Kind(10019), "").tags(tags).sign_with_keys(keys)
|
||||
eventid = await client.send_event(event)
|
||||
print(
|
||||
bcolors.CYAN + "[" + nut_wallet.name + "] Announced mint preferences info event (" + eventid.id.to_hex() + ")" + bcolors.ENDC)
|
||||
@@ -624,7 +624,7 @@ class NutZapWallet:
|
||||
}
|
||||
tags.append(Tag.parse(["proof", json.dumps(nut_proof)]))
|
||||
|
||||
event = EventBuilder(Kind(9321), comment, tags).sign_with_keys(keys)
|
||||
event = EventBuilder(Kind(9321), comment).tags(tags).sign_with_keys(keys)
|
||||
response = await client.send_event(event)
|
||||
|
||||
await self.update_spend_mint_proof_event(nut_wallet, proofs, mint_url, "zapped", keys.public_key().to_hex(),
|
||||
|
||||
@@ -2,14 +2,17 @@
|
||||
# even trying to send to them, avoiding potential errors or delays on the way.
|
||||
|
||||
|
||||
AVOID_OUTBOX_RELAY_LIST = ["wss://nos.lol", "wss://relay.primal.net",
|
||||
"wss://nostrelay.yeghro.site", "wss://nostr.wine", "wss://filter.nostr.wine",
|
||||
AVOID_OUTBOX_RELAY_LIST = ["wss://nos.lol", "wss://nostrelay.yeghro.site", "wss://nostr.wine",
|
||||
"wss://filter.nostr.wine", "wss://relay.lightwork.space", "wss://onchain.pub",
|
||||
"wss://nostr21.com", "wss://nostr.bitcoiner.social", "wss://nostr.orangepill.dev",
|
||||
"wss://brb.io",
|
||||
"wss://brb.io", "wss://relay.nostr.ch", "wss://nostr.rock", "wss://nostr.sandwich.farm",
|
||||
"wss://nostr.onsats.org", "wss://nostr-pub.semisol.dev", "wss://no.str.cr",
|
||||
"wss://nostr.zebedee.cloud",
|
||||
"wss://nostr.600.wtf",
|
||||
"wss://relay.lnpay.me", "wss://relay.snort.social", "wss://relay.minds.com/nostr/v1/ws",
|
||||
"ws://elitedesk:4848",
|
||||
"wss://nostr-pub.semisol.dev", "wss://mostr.mostr.pub", "wss://relay.mostr.pub",
|
||||
"wss://minds.com",
|
||||
"wss://minds.com", "wss://nostr.leximaster.com",
|
||||
"wss://yabu.me", "wss://relay.yozora.world", "wss://filter.nostr.wine/?global=all",
|
||||
"wss://eden.nostr.land",
|
||||
"wss://relay.orangepill.ovh", "wss://nostr.jcloud.es", "wss://af.purplerelay.com",
|
||||
@@ -48,14 +51,14 @@ AVOID_OUTBOX_RELAY_LIST = ["wss://nos.lol", "wss://relay.primal.net",
|
||||
"wss://relay.nostreggs.io", "wss://relay.blackbyte.nl", "ws://localhost:8080",
|
||||
"wss://127.0.0.1:4869", "wss://sendit.nosflare.io",
|
||||
"wss://astral.ninja", "wss://nostr.libertasprimordium.com", "wss://relay.shitforce.one",
|
||||
"wss://nostr.cro.social",
|
||||
"wss://nostr.cro.social", "wss://datagrave.wild-vibes.ts.net/nostr", "wss://nostr01.sharkshake.net",
|
||||
"wss://relay.nostreggs.io", "wss://nostr.rocks", "wss://groups.0xchat.com",
|
||||
"wss://bostr.lecturify.net", "wss://dave.st.germa.in/nostr",
|
||||
"wss://dvms.f7z.io", "wss://nostr.social", "wss://i.nostr.build",
|
||||
"wss://teemie1-relay.duckdns.org",
|
||||
"wss://teemie1-relay.duckdns.org", "wss://newperspectives.duckdns.org",
|
||||
"wss://nostrs.build", "wss://relay.hllo.live", "wss://relay-pub.deschooling.us",
|
||||
"wss://nostr.sandwich.farm", "wss://nostr.lol", "wss://nostr.developer.li",
|
||||
"wss://paid.spore.ws",
|
||||
"wss://paid.spore.ws", "ws://relay.damus.io",
|
||||
"ws://ofotwjuiv7t6q4azt2fjx3qo7esglmxdeqmh2qvdsdnxw5eqgza24iyd.onion", "wss://r.kojira.io",
|
||||
"wss://nostr-relay.h3z.jp", "wss://relay.yozora.world",
|
||||
"wss://nostr.0xtr.dev", "wss://purplepeg.es", "wss://nostr.mutinywallet.com",
|
||||
@@ -73,5 +76,4 @@ AVOID_OUTBOX_RELAY_LIST = ["wss://nos.lol", "wss://relay.primal.net",
|
||||
"wss://pablof7z.nostr1.com", "wss://nostr.beckmeyer.us", "wss://pow.hzrd149.com",
|
||||
"wss://relay.nostrss.re", "wss://relay.nostr.bg", "ws://bugman.mguy.net:4848"
|
||||
|
||||
|
||||
]
|
||||
|
||||
@@ -318,7 +318,7 @@ async def send_job_status_reaction(original_event_id_hex, original_event_author_
|
||||
content = reaction
|
||||
|
||||
keys = Keys.parse(dvm_config.PRIVATE_KEY)
|
||||
reaction_event = EventBuilder(EventDefinitions.KIND_FEEDBACK, str(content), reply_tags).sign_with_keys(keys)
|
||||
reaction_event = EventBuilder(EventDefinitions.KIND_FEEDBACK, str(content)).tags(reply_tags).sign_with_keys(keys)
|
||||
await send_event_outbox(reaction_event, client=client, dvm_config=dvm_config)
|
||||
|
||||
if dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||
|
||||
@@ -21,7 +21,7 @@ async def create_reaction(keys, title, dtag):
|
||||
|
||||
keys = Keys.parse(keys)
|
||||
content = ""
|
||||
event = EventBuilder(Kind(30030), content, [d_tag, title_tag] + emoji_tags).sign_with_keys(keys)
|
||||
event = EventBuilder(Kind(30030), content).tags([d_tag, title_tag] + emoji_tags).sign_with_keys(keys)
|
||||
|
||||
client = Client(keys)
|
||||
# We add the relays we defined above and told our DVM we would want to receive events to.
|
||||
@@ -42,7 +42,7 @@ async def delete_reaction(keys, eid: str, dtag: str):
|
||||
e_tag = Tag.parse(["e", eid])
|
||||
a_tag = Tag.parse(
|
||||
["a", "30030:" + keys.public_key().to_hex() + ":" + dtag])
|
||||
event = EventBuilder(Kind(5), "", [e_tag, a_tag]).sign_with_keys(keys)
|
||||
event = EventBuilder(Kind(5), "").tags([e_tag, a_tag]).sign_with_keys(keys)
|
||||
|
||||
client = Client(keys)
|
||||
# We add the relays we defined above and told our DVM we would want to receive events to.
|
||||
|
||||
@@ -304,8 +304,7 @@ def zaprequest(lud16: str, amount: int, content, zapped_event, zapped_user, keys
|
||||
tags = [p_tag]
|
||||
if zapped_event is not None:
|
||||
tags.append(e_tag)
|
||||
zap_request = EventBuilder(Kind(9733), content,
|
||||
tags).sign_with_keys(keys).as_json()
|
||||
zap_request = EventBuilder(Kind(9733), content).tags(tags).sign_with_keys(keys).as_json()
|
||||
keys = Keys.parse(encryption_key)
|
||||
if zapped_event is not None:
|
||||
encrypted_content = enrypt_private_zap_message(zap_request, keys.secret_key(), zapped_event.author())
|
||||
@@ -316,8 +315,7 @@ def zaprequest(lud16: str, amount: int, content, zapped_event, zapped_user, keys
|
||||
tags.append(anon_tag)
|
||||
content = ""
|
||||
|
||||
zap_request = EventBuilder(Kind(9734), content,
|
||||
tags).sign_with_keys(keys).as_json()
|
||||
zap_request = EventBuilder(Kind(9734), content).tags(tags).sign_with_keys(keys).as_json()
|
||||
|
||||
response = requests.get(callback + "?amount=" + str(int(amount) * 1000) + "&nostr=" + urllib.parse.quote_plus(
|
||||
zap_request) + "&lnurl=" + encoded_lnurl)
|
||||
|
||||
@@ -32,7 +32,7 @@ async def do_some_work():
|
||||
f = Filter().author(keys.public_key()).limit(10)
|
||||
events = await database.query([f])
|
||||
|
||||
for event in events:
|
||||
for event in events.to_vec():
|
||||
print(event.as_json())
|
||||
|
||||
nostr_dvm_thread = Thread(target=reconcile_db)
|
||||
|
||||
@@ -183,11 +183,11 @@ def playground(announce=False):
|
||||
|
||||
events = await database.query(filters)
|
||||
if dvm.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||
print("[" + dvm.dvm_config.NIP89.NAME + "] Considering " + str(len(events)) + " Events")
|
||||
print("[" + dvm.dvm_config.NIP89.NAME + "] Considering " + str(len(events.to_vec())) + " Events")
|
||||
ns.finallist = {}
|
||||
#search_list = result.split(',')
|
||||
|
||||
for event in events:
|
||||
for event in events.to_vec():
|
||||
#if all(ele in event.content().lower() for ele in []):
|
||||
#if not any(ele in event.content().lower() for ele in []):
|
||||
filt = Filter().kinds(
|
||||
@@ -195,8 +195,8 @@ def playground(announce=False):
|
||||
definitions.EventDefinitions.KIND_REPOST,
|
||||
definitions.EventDefinitions.KIND_NOTE]).event(event.id()).since(since)
|
||||
reactions = await database.query([filt])
|
||||
if len(reactions) >= 1:
|
||||
ns.finallist[event.id().to_hex()] = len(reactions)
|
||||
if len(reactions.to_vec()) >= 1:
|
||||
ns.finallist[event.id().to_hex()] = len(reactions.to_vec())
|
||||
|
||||
result_list = []
|
||||
finallist_sorted = sorted(ns.finallist.items(), key=lambda x: x[1], reverse=True)[:int(200)]
|
||||
|
||||
@@ -86,8 +86,8 @@ async def analyse_users(user_ids=None):
|
||||
followers_filter = Filter().authors(user_keys).kind(Kind(3))
|
||||
followers = await database.query([followers_filter])
|
||||
allfriends = []
|
||||
if len(followers) > 0:
|
||||
for follower in followers:
|
||||
if len(followers.to_vec()) > 0:
|
||||
for follower in followers.to_vec():
|
||||
frens = []
|
||||
for tag in follower.tags().to_vec():
|
||||
if tag.as_vec()[0] == "p":
|
||||
|
||||
Reference in New Issue
Block a user