Skip to content

Instantly share code, notes, and snippets.

@mitsugu
Created July 11, 2024 12:59
Show Gist options
  • Save mitsugu/d6f71a49044876225015e6206e86aacb to your computer and use it in GitHub Desktop.
Save mitsugu/d6f71a49044876225015e6206e86aacb to your computer and use it in GitHub Desktop.
Nostr リレーサーバーから指定された kind のデータを取得するサンプル。
package main
import (
"context"
"fmt"
"log"
"time"
"github.com/nbd-wtf/go-nostr"
)
func main() {
// リレーのURLを指定します
relayURL := "wss://ganges.in/"
// コンテキストを作成します
// タイムアウトは 10 秒に仮打ちしています
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
relay, err := nostr.RelayConnect(ctx, relayURL)
if err != nil {
log.Fatalf("リレーへの接続に失敗しました: %v", err)
}
defer relay.Close()
// Kind の配列には取得したい kind の値を設定します
// 例.
// Kinds: []int{nostr.KindTextNote,nostr.KindRepost,nostr.KindReaction}
// 配列 npub には 16 進公開鍵を設定します
// 取得数を整数で設定します
// (とりあえず 10000 件にしてますが適宜書き換えてください
//
npub := []string{"*** write hex npub this place ***"}
filters := []nostr.Filter{{
Kinds: []int{nostr.KindTextNote},
Authors: npub,
Limit: 10000,
}}
// 上記フィルタを使ってイベントを購読します
sub, err := relay.Subscribe(ctx, filters)
defer sub.Unsub()
if err != nil {
log.Fatalf("購読中にエラーが発生しました: %v", err)
}
// イベントを受け取って表示します
for ev := range sub.Events {
fmt.Printf("%v\n", ev.ID)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment