捕获监听器(Capture Listener)
举个例子,假设每次向 ‘/logs’ 路由发起请求时,我的代码都会执行一个任务,用于检查新日志是否与旧日志不同。那么,我们来看看这该如何实现:APP_STATUS、LOGS 或 BACKUP。该函数应接受两个参数:
before(表示请求之前的状态)after(表示请求之后的状态)
before 和 after 返回的数据类型取决于监听器所“监听”的 endpoint。如果是 APP_STATUS 路由,将接收到 StatusData;LOGS 将接收到 LogsData;BACKUP 将接收到 BackupData。
正如你在上面的示例中可能已经注意到的,第一次进行日志之间的比较时,after != before 返回 True。这正是因为此时 after 等于 LogsData(logs=''),因为内部缓存中还没有存储任何内容。
关于该装饰器的补充信息
关于该装饰器的补充信息
- 如果你使用 discord.py 或它的某个分支(你很可能在用),你应该
知道区分事件的是装饰器所包装的函数
的名称,但在这里则不同。为了知道
装饰器需要“监听”哪个
API 路由,我们使用
endpopint参数,它 接收一个Endpoint类,因此装饰器所 包装的函数名称由你自行决定。 - 装饰器所包装的对象实际上可以是任何
可调用对象。这包括普通函数、协程,甚至是
类(会调用
__init__)。 - 如果 endpoint 不是 [Endpoint.app_status()]、[Endpoint.logs()] 或 [Endpoint.backup()],
则只会返回一个
response参数(类型为squarecloud.http.Response)。
请求监听器(Request Listener)
“请求监听器”所做的事情基本相同。但在这里你使用的是 [Client],并且所有 endpoint 返回的都是squarecloud.http.Response 对象。
传递额外参数
你可以向某些方法传递名为extra 的关键字参数,它将被传递给你的监听器。

