[Feature Request]: Add `chat.bsky.group` namespace and group join-link embed

オープン
#321 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
52/100
issue の種類
機能追加
明瞭さ
明確に書かれている
活発さ
静か
技術スタック
swift
領域
api

調査の方向性

Start by reading the existing chat lexicon models under Sources/ATProtoKit/Models/Lexicons/chat.bsky/ and API methods under Sources/ATProtoKit/APIReference/ChatBskyAPI/ to follow their conventions. Then compare the listed missing lexicons with the upstream lexicon references and add the typed group wrappers and join-link embed. Done when the listed group operations and embed are represented in the typed pipeline with api.bsky.chat routing.

索引モデルが issue の本文から書いたものです。

説明

new feature
Summary

The upstream lexicon now ships a full chat.bsky.group.* namespace (group lifecycle, membership, join links, join requests) plus a chat.bsky.embed.joinLink embed object. None of these are reflected in ATProtoKit, so group conversation management is unreachable through the typed pipeline.

Pain points

The entire group surface (lifecycle, membership, join links, join requests, and the messageInput.embed join-link) has to be hand-built on raw XRPC, re-implementing the api.bsky.chat routing and auth plumbing that ATProtoBlueskyChat already handles for every other chat call.

Considered Alternatives

Raw XRPC for the entire group surface — loses typed pipeline, isRelatedToBskyChat host routing, and forces every consumer to repeat the same auth plumbing.

Is this a breaking change?

No

Library Examples

N/A

Additional Context
Missing lexicons
Lexicon Suggested wrapper
chat.bsky.embed.joinLink ChatBskyLexicon.Embed.JoinLink embed object, selectable in the sendMessage messageInput.embed union
chat.bsky.group.addMembers addMembers(to:memberDIDs:)
chat.bsky.group.approveJoinRequest approveJoinRequest(for:requesterDID:)
chat.bsky.group.createGroup createGroup(name:memberDIDs:memberLimit:)
chat.bsky.group.createJoinLink createJoinLink(for:)
chat.bsky.group.defs types only
chat.bsky.group.disableJoinLink disableJoinLink(for:)
chat.bsky.group.editGroup editGroup(by:name:)
chat.bsky.group.editJoinLink editJoinLink(for:expiresAt:)
chat.bsky.group.enableJoinLink enableJoinLink(for:)
chat.bsky.group.getJoinLinkPreviews getJoinLinkPreviews(for:)
chat.bsky.group.listJoinRequests listJoinRequests(for:limit:cursor:)
chat.bsky.group.listMutualGroups listMutualGroups(with:limit:cursor:)
chat.bsky.group.rejectJoinRequest rejectJoinRequest(for:requesterDID:)
chat.bsky.group.removeMembers removeMembers(from:memberDIDs:)
chat.bsky.group.requestJoin requestJoin(by:)
chat.bsky.group.updateJoinRequestsRead updateJoinRequestsRead(for:)
chat.bsky.group.withdrawJoinRequest withdrawJoinRequest(by:)

Wrappers follow the existing ATProtoBlueskyChat convention (method name mirrors the lexicon's final segment, no artificial Group prefix — matching getConversation, listConversations). All sit on api.bsky.chat and require isRelatedToBskyChat: true routing, and the group namespace maps to ChatBskyLexicon.Group.

Cross-reference
  • The convo-side discriminator (convoView.kind → #groupConvo) and the 4 convo-level endpoints (getConvoMembers, listConvoRequests, lockConvo, unlockConvo) are tracked in a separate feature request #320.
References
主要言語
Swift
スター
226
フォーク
40
平均マージ
5時間 8分
マージ済み PR(30日)
3

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

MasterJ93/ATProtoKit のほかの issue

MasterJ93/ATProtoKit の issue をすべて見る

似ている issue

Swift の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。