Diva modelのslugじゃなくて特定のメソッドを持っているか(特定のmoduleをincludeしているかでもいい)を条件にしてある方がこういう時は便利だ
これはふぁぼも返信も同じで、しかも同一サービスに複数の実装がありうる(例としてmastodon向けにmikutodonも考慮に入れる場合)更にspellの定義が指数的に増える。
mastodonではpleromaのメッセージもmisskeyのメッセージもブーストできて、それに必要なキーはURIだけ。そういった状況でmastodon用のプラグイン(例としてWorldon)と、Pleroma用のプラグインと、misskey用のプラグインが並立している場合、spellだと9種類の定義を書く必要があるけど、worldがメソッドを持つことを仮定して引数にメッセージオブジェクトを渡してやってduck typingする方法では各サービスの自明な実装のみがあればよい。
もしPleromaプラグインやmisskeyプラグインがあったら。TL取得も各種POSTもworldに準じて行えばよいとは思うけど、spellの起動が問題になりそう。
マストドン オーエスピーエヌ ドットジェピ
mstdn.ospn.jp(公開してなくて遊びで立ててるやつ)のログイン時用法がわかった
同じはずなのに2つのTLで異なる内容のPlugin::Twitter::Messageが表示されているような状態が発生した直後にこれで落ちた
https://gist.github.com/cobodo/ebfc79786cee934d54235c96a8235965
それはそれとして、WorldonはPleroma非対応です。IDどうこういう問題じゃないくらいAPIの挙動が不明確でなんもわからんし対応しようがないので。