Skip to content

通知チャンネル (notifier) ​

通知チャンネルを追加します。@provider(points.NOTIFIER, id=...) は NotifierFactory を返します。ファクトリはチャンネルのエントリ NotifierSettings を受け取り、Notifier を返します。ユーザーが設定 → 通知でチャンネルを追加するとき、種類の一覧にこの id が表示されます。

python
from ab_sdk import Plugin, points, provider
from ab_sdk.notify import NotificationMessage, NotifierFactory, NotifierSettings


class Channel:
    def __init__(self, settings: NotifierSettings) -> None:
        self.settings = settings

    async def send(self, message: NotificationMessage) -> bool:
        ...  # 配信に成功したら True を返す

    async def test(self) -> tuple[bool, str]:
        ok = await self.send(NotificationMessage(kind="event", title="AB", body="test"))
        return ok, "ok" if ok else "送信に失敗しました"


class MyPlugin(Plugin):
    @provider(points.NOTIFIER, id="my-push")
    def channel(self) -> NotifierFactory:
        return Channel

コントラクト ​

  • send(message) は bool を返します。バックエンドがメッセージを拒否したときは False を返してください。例外を送出しないでください。
  • test() は (成功したか, 説明) を返します。
  • NotificationMessage.kind は episode(新しい話。official_title、season、episode、poster_url を持つ)または event(システムイベント)です。
  • 認証情報はプラグイン自身の config_model に置き、self.config で読みます。チャンネルのエントリ NotifierSettings が持つのは、共通のテンプレート template と、その他のフィールド extra だけです。
  • プッシュの文面を書き換えるには、通知メッセージテンプレート フックを使います。

テスト ​

python
from ab_sdk.testing import NotifierContract

class TestChannel(NotifierContract):
    def create(self):
        ...                    # バックエンドがメッセージを受け付けるチャンネル

    def create_failing(self):
        ...                    # 任意:バックエンドがメッセージを拒否するチャンネル

例:examples/plugins/ntfy-notifier。

AutoBangumiはMITライセンスの下で公開されています。(最新版: v3.3.2)