update to sdk 036.1 / 0.37?

This commit is contained in:
Believethehype
2024-11-16 11:57:45 +01:00
parent 4c2a042e3b
commit 3cc7fd11a8
35 changed files with 165 additions and 152 deletions

View File

@@ -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,
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,
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)

View File

@@ -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)

View File

@@ -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:

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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"])]

View File

@@ -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:

View File

@@ -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

View File

@@ -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 = []

View File

@@ -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"])]

View File

@@ -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)

View File

@@ -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):

View File

@@ -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)

View File

@@ -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")

View File

@@ -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)

View File

@@ -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():

View File

@@ -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():

View File

@@ -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():

View File

@@ -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)

View File

@@ -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(

View File

@@ -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)

View File

@@ -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:

View File

@@ -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)

View File

@@ -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')

View File

@@ -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)

View File

@@ -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(),

View File

@@ -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"
]

View File

@@ -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:

View File

@@ -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.

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)]

View File

@@ -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":