跳到主要内容

账号

client.accounts API 提供账号信息的获取与管理操作。

获取账号

通过 ID 获取

final account = await client.accounts.fetchById('12345');
print(account.displayName);
print(account.followersCount);

通过用户名(acct)获取

final account = await client.accounts.lookup('user@mastodon.social');

如果服务器不支持 lookup 接口,本库会自动回退到基于搜索的查找方式。

当前用户

final me = await client.accounts.verifyCredentials();
print(me.source); // 仅认证用户可获取的附加字段

批量获取账号

final accounts = await client.accounts.fetchMultiple(['1', '2', '3']);

搜索账号

final results = await client.accounts.search(
'keyword',
limit: 10,
resolve: true, // 通过 WebFinger 解析远程账号
);

社交关系

关注者与关注

两者都返回支持分页的 MastodonPage<MastodonAccount>

final followers = await client.accounts.fetchFollowers('12345', limit: 40);
final following = await client.accounts.fetchFollowing('12345', limit: 40);

对于私密账号,会返回空页面而不是抛出错误。

关系状态

final rels = await client.accounts.fetchRelationships(['12345', '67890']);
for (final rel in rels) {
print('${rel.id}: following=${rel.following}, followedBy=${rel.followedBy}');
}

共同关注者

final familiar = await client.accounts.fetchFamiliarFollowers(['12345']);

关注 / 取消关注

// 带选项的关注
final rel = await client.accounts.follow(
'12345',
reblogs: true, // 在主页时间线显示转嘟
notify: true, // 新帖子时接收通知
languages: ['en'], // 仅显示指定语言的帖子
);

// 取消关注
await client.accounts.unfollow('12345');

屏蔽 / 静音

// 屏蔽
await client.accounts.block('12345');
await client.accounts.unblock('12345');

// 静音(带时长)
await client.accounts.mute('12345', duration: 3600); // 1 小时
await client.accounts.unmute('12345');

个人资料操作

更新个人资料

final updated = await client.accounts.updateCredentials(
MastodonCredentialAccountUpdateRequest(
displayName: 'New Name',
note: 'Updated bio',
),
);

推荐 / 取消推荐(在个人资料上展示)

await client.accounts.endorse('12345');   // 在个人资料上推荐
await client.accounts.unendorse('12345'); // 从个人资料移除

私密备注

await client.accounts.setNote('12345', comment: 'Met at conference');

账号帖子

final page = await client.accounts.fetchStatuses(
'12345',
limit: 20,
excludeReplies: true,
excludeReblogs: true,
);

可用过滤器:excludeRepliesexcludeReblogsonlyMediapinnedtagged