Zum Hauptinhalt springen

Konversationen und Umfragen

Konversationen

Die client.conversations-API verwaltet Direktnachrichten-Konversationen — Threads, die aus Statusmeldungen mit visibility: direct bestehen.

Konversationen abrufen

final page = await client.conversations.fetch(limit: 20);

for (final conversation in page.items) {
print(conversation.id);
print(conversation.unread);
print(conversation.accounts.map((a) => a.acct).join(', '));
if (conversation.lastStatus != null) {
print(conversation.lastStatus!.content);
}
}

Gibt MastodonPage<MastodonConversation> zurück. Verwende nextMaxId und prevMinId zur Paginierung:

MastodonPage<MastodonConversation>? page = await client.conversations.fetch();

while (page != null && page.nextMaxId != null) {
page = await client.conversations.fetch(maxId: page.nextMaxId);
for (final conversation in page.items) {
print(conversation.id);
}
}

Paginierungsparameter:

ParameterBeschreibung
limitMaximale Ergebnisanzahl (Standard: 20, max: 40)
maxIdKonversationen älter als diese ID zurückgeben
sinceIdKonversationen neuer als diese ID zurückgeben
minIdKonversationen unmittelbar nach dieser ID zurückgeben (Vorwärts-Paginierung)

Konversation als gelesen markieren

final conversation = await client.conversations.markAsRead('7');
print(conversation.unread); // false

Gibt das aktualisierte MastodonConversation zurück.

Konversation löschen

await client.conversations.delete('7');

Das MastodonConversation-Modell

FeldTypBeschreibung
idStringInterne Konversations-ID
unreadboolOb die Konversation ungelesene Nachrichten hat
accountsList<MastodonAccount>Teilnehmer (ohne den authentifizierten Benutzer)
lastStatusMastodonStatus?Neueste Statusmeldung der Konversation, oder null

Umfragen

Die client.polls-API ermöglicht das Abrufen von Umfragen und das Einreichen von Stimmen. Umfragen sind in der Regel an Statusmeldungen angehängt; verwende status.poll, um die Umfrage-ID zu erhalten.

Umfrage abrufen

final poll = await client.polls.fetch('34');
print(poll.votesCount);
print(poll.expired);

for (final option in poll.options) {
print('${option.title}: ${option.votesCount ?? "hidden"}');
}

In einer Umfrage abstimmen

Eine Liste nullbasierter Optionsindizes übergeben. Bei Einzelauswahl-Umfragen genau einen Index angeben.

// Single choice
final poll = await client.polls.vote('34', [0]);

// Multiple choices (allowed when poll.multiple == true)
final poll = await client.polls.vote('34', [0, 2]);

print(poll.voted); // true
print(poll.ownVotes); // e.g. [0, 2]

Wirft MastodonAlreadyVotedException, wenn der authentifizierte Benutzer bereits abgestimmt hat.

Das MastodonPoll-Modell

FeldTypBeschreibung
idStringInterne Umfrage-ID
expiresAtDateTime?Ablaufzeitpunkt
expiredboolOb die Umfrage beendet ist
multipleboolOb Mehrfachauswahl erlaubt ist
votesCountintGesamtanzahl abgegebener Stimmen
votersCountint?Anzahl eindeutiger Wähler (weicht bei Mehrfachauswahl von votesCount ab)
optionsList<MastodonPollOption>Verfügbare Optionen
emojisList<MastodonCustomEmoji>Benutzerdefinierte Emojis im Optionstext
votedbool?Ob der authentifizierte Benutzer abgestimmt hat
ownVotesList<int>?Indizes der vom authentifizierten Benutzer gewählten Optionen

MastodonPollOption-Felder:

FeldTypBeschreibung
titleStringOptionstext
votesCountint?Stimmen für diese Option; null bei nicht-öffentlichen Umfragen