Zum Hauptinhalt springen

Notizen

Die client.notes-API bietet Operationen zum Abrufen, Erstellen und Interagieren mit Notizen (Beitraegen).

Notizen abrufen

Einzelne Notiz

final note = await client.notes.show(noteId: '9xyz');
print(note.text); // Notizinhalt
print(note.user.name); // Anzeigename des Autors

Liste oeffentlicher Notizen

final notes = await client.notes.list(limit: 20);

Akzeptiert die Filter local, reply, renote, withFiles und poll.

Antworten und Kinder

// Direkte Antworten auf eine Notiz
final replies = await client.notes.replies(noteId: '9xyz', limit: 10);

// Alle Kinder (Antworten und zitierende Renotes)
final children = await client.notes.children(noteId: '9xyz', limit: 10);

// Elternkette (Vorfahren)
final ancestors = await client.notes.conversation(noteId: '9xyz', limit: 10);

Timelines

Alle Timeline-Methoden akzeptieren limit, sinceId, untilId, sinceDate und untilDate zur Seitennavigation.

Startseiten-Timeline (Authentifizierung erforderlich)

final notes = await client.notes.timelineHome(limit: 20);

Lokale Timeline

final notes = await client.notes.timelineLocal(limit: 20);

Globale Timeline

final notes = await client.notes.timelineGlobal(limit: 20);

Hybride Timeline (Authentifizierung erforderlich)

final notes = await client.notes.timelineHybrid(limit: 20);

Cursorbasierte Seitennavigation

// Naechste Seite abrufen, anhand der ID der aeltesten bereits geladenen Notiz
final older = await client.notes.timelineHome(
limit: 20,
untilId: notes.last.id,
);

// Neuere Notizen seit der zuletzt geladenen Notiz abrufen
final newer = await client.notes.timelineHome(
limit: 20,
sinceId: notes.first.id,
);

Notizen erstellen

Mindestens eines der Felder text, renoteId, fileIds oder pollChoices muss angegeben werden.

Einfacher Text

final note = await client.notes.create(
text: 'Hello, Misskey!',
visibility: 'public',
);
print(note.id);

Mit Inhaltswarnung

final note = await client.notes.create(
text: 'This contains spoilers.',
cw: 'Spoiler warning',
);

Mit Dateien aus dem Drive

// Zuerst eine Datei in das Drive hochladen
final file = await client.drive.files.create(
bytes: imageBytes,
filename: 'photo.jpg',
);

// Die Drive-Datei-ID an die Notiz anhaengen
final note = await client.notes.create(
text: 'Check this out!',
fileIds: [file.id],
);

Mit einer Umfrage

final note = await client.notes.create(
text: 'What do you prefer?',
pollChoices: ['Option A', 'Option B', 'Option C'],
pollMultiple: false,
pollExpiredAfter: 86400000, // 24 Stunden in Millisekunden
);

Antwort und Renote

// Antwort
final reply = await client.notes.create(
text: 'Great point!',
replyId: originalNoteId,
);

// Reines Renote (kein Text)
final renote = await client.notes.create(renoteId: originalNoteId);

// Zitierendes Renote
final quote = await client.notes.create(
text: 'My thoughts on this:',
renoteId: originalNoteId,
);

Sichtbarkeitsoptionen

// 'public', 'home', 'followers', 'specified'
final note = await client.notes.create(
text: 'Followers only',
visibility: 'followers',
);

// Direktnachricht an bestimmte Benutzer
final dm = await client.notes.create(
text: 'Hey!',
visibility: 'specified',
visibleUserIds: [targetUserId],
);

Notiz-Interaktionen

Reaktionen

// Reaktion hinzufuegen (Unicode-Emoji oder benutzerdefiniertes Emoji-Kurzkuerzel)
await client.notes.reactionsCreate(noteId: noteId, reaction: '👍');
await client.notes.reactionsCreate(noteId: noteId, reaction: ':awesome:');

// Eigene Reaktion entfernen
await client.notes.reactionsDelete(noteId: noteId);

// Reaktionen einer Notiz abrufen
final reactions = await client.notes.reactions(noteId: noteId, limit: 20);
for (final r in reactions) {
print('${r.reaction}: ${r.user.username}');
}

Renotes

// Renote (kein Text)
await client.notes.create(renoteId: noteId);

// Alle eigenen Renotes einer Notiz zuruecknehmen
await client.notes.unrenote(noteId: noteId);

// Benutzer auflisten, die renotiert haben
final renotes = await client.notes.renotes(noteId: noteId, limit: 20);

Umfrageabstimmung

// choice ist ein nullbasierter Index
await client.notes.pollsVote(noteId: noteId, choice: 0);

Notiz loeschen

await client.notes.delete(noteId: noteId);

Suche

Volltextsuche

final results = await client.notes.search(
query: 'Misskey',
limit: 20,
);

Nach Benutzer oder Kanal filtern:

final results = await client.notes.search(
query: 'hello',
userId: someUserId,
channelId: someChannelId,
);

Nach Hashtag suchen

// Einfache Tag-Suche
final results = await client.notes.searchByTag(tag: 'misskey');

// Komplexe Abfrage: (tagA AND tagB) OR tagC
final results = await client.notes.searchByTag(
queryTags: [
['tagA', 'tagB'],
['tagC'],
],
);

Favoriten und Entwerfe

// Favoriten hinzufuegen / entfernen
await client.notes.favoritesCreate(noteId: noteId);
await client.notes.favoritesDelete(noteId: noteId);

// Eigene Favoriten abrufen
final favs = await client.account.favorites(limit: 20);

// Entwerfe auflisten
final drafts = await client.notes.draftsList(limit: 20);

// Entwurfanzahl
final count = await client.notes.draftsCount();

Uebersetzung

final translation = await client.notes.translate(
noteId: noteId,
targetLang: 'en',
);
print(translation.text);