Capture Listener
たとえば、‘/logs’ ルートへのリクエストが行われるたびに、新しいログが古いものと異なるかどうかをチェックするタスクをコードで実行したいとします。では、これをどのように実現できるか見てみましょう。APP_STATUS、LOGS、または BACKUP です。この関数は 2 つのパラメータを取る必要があります。
before(リクエスト前の状態を表します)after(リクエスト後の状態を表します)
before と after が返すデータ型は、リスナーが「リッスン」しているエンドポイントによって異なります。APP_STATUS ルートであれば StatusData を、LOGS であれば LogsData を、BACKUP であれば BackupData を受け取ります。
上記の例で気づいたかもしれませんが、ログ同士の比較が初めて行われるとき、after != before は True を返します。これはまさに、after が LogsData(logs='') に等しいためで、内部のキャッシュにはまだ何も保存されていないからです。
このデコレータに関する追加情報
このデコレータに関する追加情報
- discord.py またはそのフォーク(おそらく使っているでしょう)を使ったことがあれば、
イベントを区別するのはデコレータがラップする関数の名前だと
知っているはずですが、ここでは異なります。デコレータがどの
API ルートを「リッスン」する必要があるかを知るために、
endpopintパラメータを使います。これはEndpointクラスを受け取るので、デコレータがラップする関数の名前は あなた次第です。 - デコレータがラップする関数は、実際には callable であれば何でも
構いません。これには通常の関数、コルーチン、さらには
クラス(
__init__が呼び出されます)も含まれます。 - エンドポイントが [Endpoint.app_status()]、[Endpoint.logs()]、または [Endpoint.backup()] でない場合、
responseパラメータ(squarecloud.http.Response型)のみが 返されます。
Request Listener
「request listener」はほぼ同じことを行います。ただしここでは [Client] を使い、すべてのエンドポイントの戻り値はsquarecloud.http.Response オブジェクトになります。
追加の引数を渡す
一部のメソッドにはextra というキーワード引数を渡すことができ、これがリスナーに渡されます。

