aurival 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +202 -0
- package/dist/bot.d.ts +76 -4
- package/dist/bot.d.ts.map +1 -1
- package/dist/bot.js +183 -9
- package/dist/bot.js.map +1 -1
- package/dist/caps.d.ts +43 -0
- package/dist/caps.d.ts.map +1 -1
- package/dist/caps.js +45 -0
- package/dist/caps.js.map +1 -1
- package/dist/cooldown.d.ts +164 -0
- package/dist/cooldown.d.ts.map +1 -0
- package/dist/cooldown.js +221 -0
- package/dist/cooldown.js.map +1 -0
- package/dist/embeds.d.ts +38 -0
- package/dist/embeds.d.ts.map +1 -1
- package/dist/embeds.js +59 -5
- package/dist/embeds.js.map +1 -1
- package/dist/errors.d.ts +31 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +35 -0
- package/dist/errors.js.map +1 -1
- package/dist/events.d.ts +69 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +153 -20
- package/dist/events.js.map +1 -1
- package/dist/http.d.ts +34 -5
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +41 -4
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/bot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAEtF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE3E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAepE,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC;;;;;;;2EAO2E;AAC3E,MAAM,sBAAsB,GAAgC,IAAI,GAAG,CAAC;IAClE,CAAC,qBAAqB,EAAE,4CAA4C,CAAC;IACrE,CAAC,wBAAwB,EAAE,qDAAqD,CAAC;CAClF,CAAC,CAAC;AAuBH,oFAAoF;AACpF,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAExC,6EAA6E;AAC7E,6EAA6E;AAC7E,0EAA0E;AAC1E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAkB/B;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAOxC,MAAM,YAAY,GAAe,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;AAOjE,2EAA2E;AAC3E,sEAAsE;AACtE,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAgB,EAChB,OAAgB,EAChB,IAAY,EACZ,GAAW,EACX,MAAmB;IAEnB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACzD,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;QACxC,YAAY,EAAE,YAAY,EAAE;QAC5B,IAAI;QACJ,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAChD,MAAM,EAAE,GAAG;QACX,MAAM;KACP,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAgB,EAChB,GAAW,EACX,OAAqD,EACrD,GAAW;IAEX,eAAe,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,QAAiC,EAAE,GAAW;IAC5E,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO;IACjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;YAAE,SAAS;QACtD,MAAM,MAAM,GAAG,GAA8B,CAAC;QAC9C,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YAAE,SAAS;QACxC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,EAAE;gBAAE,SAAS;YACtD,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,kCAAkC,IAAI,kCAAkC,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,GAAG;IACL,WAAW,GAAG,IAAI,GAAG,EAAsB,CAAC;IACrD;;;;;;;OAOG;IACM,WAAW,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC9C,SAAS,GAAG,IAAI,GAAG,EAAiB,CAAC;IACrC,IAAI,CAAS;IACb,KAAK,CAAqB;IAC1B,QAAQ,CAAqB;IACtC,UAAU,GAAqB,IAAI,CAAC;IACpC,KAAK,GAAsB,IAAI,CAAC;IACvB,MAAM,CAAU;IAChB,WAAW,CAAU;IAE9B,YAAY,OAAO,GAAe,EAAE;QAClC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC;IAChD,CAAC;IAUD,OAAO,CAAC,IAAY,EAAE,MAAwB,EAAE,KAAe;QAC7D,MAAM,WAAW,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,OAAO,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5D,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,YAAY,CAAC,WAAW,IAAI,mBAAmB,CAAC,CAAC;QACtF,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;IAiCD,EAAE,CAAC,IAAY,EAAE,OAAmB;QAClC,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,YAAY,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;;YAC7D,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,EAAa;QACnB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;IAED,yEAAyE;IAEzE,iFAAiF;IACjF,KAAK,CAAC,GAAG;QACP,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,GAAS,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC5C,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,oEAAoE;YACpE,sEAAsE;YACtE,oEAAoE;YACpE,sEAAsE;YACtE,oEAAoE;YACpE,8CAA8C;YAC9C,IAAI,GAAG,YAAY,iBAAiB,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;gBACpE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAoB;QAC9B,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,YAAY,EAAE,CAAC;YACzC,MAAM,IAAI,YAAY,CACpB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,wCAAwC,YAAY,UAAU,CACvF,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,WAAW,EAAE,CAAC;QACzC,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1B,0EAA0E;YAC1E,4DAA4D;YAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,IAAI,IAAI,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;QACnD,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAErF,wEAAwE;QACxE,sEAAsE;QACtE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAErE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC;YAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE;YACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAC1C,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gBACrB,KAAK,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1C,CAAC;YACD,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;YAChD,MAAM,EAAE,IAAI,CAAC,IAAI;YACjB,OAAO,EAAE,OAAO,CAAC,GAAG;YACpB,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YACnC,KAAK,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;gBAAS,CAAC;YACT,SAAS,EAAE,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,cAAc;QAClB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QACtC,MAAM,OAAO,CAAC,IAAI,CAAC;YACjB,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;SACjE,CAAC,CAAC;IACL,CAAC;IAED,yEAAyE;IAEzE;;;;OAIG;IACH,KAAK,CAAC,aAAa,CACjB,IAAgB,EAChB,GAAW,EACX,MAAmB;QAEnB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI;YACpB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW;SACnC,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC;YACH,MAAM,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,CAAC,GAAG,YAAY,cAAc,CAAC;gBAAE,MAAM,GAAG,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,IAAI,CACZ,iCAAiC,GAAG,CAAC,IAAI,kCAAkC;gBACzE,4CAA4C,CAC/C,CAAC;YACF,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACzE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CACd,IAAgB,EAChB,GAAW,EACX,OAAqD,EACrD,KAAqB,EACrB,SAAsB,EACtB,QAAqB;QAErB,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAC/C,SAAS,CAAC;YACR,IAAI,MAAM,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;gBAAE,OAAO;YAClE,IAAI,CAAC;gBACH,wEAAwE;gBACxE,oEAAoE;gBACpE,MAAM,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;oBAClC,OAAO,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;oBACzC,SAAS;gBACX,CAAC;gBACD,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;oBAChC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;oBACvD,OAAO;gBACT,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;IACH,CAAC;IAED,yEAAyE;IAEzE,KAAK,CAAC,SAAS,CAAC,KAAY;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC;QACb,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,KAAY;QACxB,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAY;QAC/B,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,0EAA0E;YAC1E,sCAAsC;YACtC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO;QAChC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,0DAA0D;YAC1D,IAAI,CAAC,IAAI,CAAC,KAAK,CACb,eAAe,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAChH,CAAC;YACF,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED,2EAA2E;IAE3E,gBAAgB,CAAC,GAAY;QAC3B,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE;YAAE,OAAO,YAAY,CAAC;QACjE,yEAAyE;QACzE,mEAAmE;QACnE,qEAAqE;QACrE,sDAAsD;QACtD,IAAI,IAAI,GAA4B,IAAI,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAC1B,GAAG,EAAE,CAAC,IAAI,EACV,CAAC,GAAY,EAAE,EAAE;gBACf,IAAI,CAAC,IAAI,CAAC,KAAK,CACb,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAChF,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC,CACF,CAAC;QACJ,CAAC,EAAE,oBAAoB,CAAC,CAAC;QACzB,OAAO;YACL,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,IAAI,IAAI,KAAK,IAAI;oBAAE,OAAO;gBAC1B,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;oBAAE,OAAO;gBAC1B,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;oBAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,CACb,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC/E,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,cAAc,CAAC,KAAY;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO;QAChC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,GAAY,CAAC,CAAC;YAC9B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,oEAAoE;gBACpE,gEAAgE;gBAChE,IAAI,CAAC,IAAI,CAAC,KAAK,CACb,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACtH,CAAC;gBACF,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAiB,EAAE,GAAsB;QAC5D,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;YAAE,OAAO;QACrC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,qDAAqD;YACrD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;CACF;AAED,uFAAuF;AACvF,SAAS,iBAAiB,CAAC,EAAU,EAAE,CAAc,EAAE,CAAc;IACnE,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,CAAC,KAAc,EAAQ,EAAE;YACpC,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACxC,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,GAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
|
package/dist/caps.d.ts
CHANGED
|
@@ -69,4 +69,47 @@ export declare const EMPTY_MESSAGE = "a message needs text, embeds or buttons";
|
|
|
69
69
|
* and this file.
|
|
70
70
|
*/
|
|
71
71
|
export declare const NOTHING_TO_EDIT = "an edit needs text, embeds or buttons";
|
|
72
|
+
/**
|
|
73
|
+
* AMENDMENT-08 §4: the command-cooldown notice, sent through `ctx.reply`
|
|
74
|
+
* once per bucket per window. `{name}` is the command as the developer
|
|
75
|
+
* registered it; `{n}` is `Math.max(1, Math.ceil(retryAfterSeconds))`
|
|
76
|
+
* (`cooldown.ts`'s `roundSeconds`) — the SAME rounding rule the button
|
|
77
|
+
* toast's `{n}` uses (§5.4), stated once there. Lives byte-identically in
|
|
78
|
+
* `sdk/python/aurival/caps.py` and the docs page; never a Go template, since
|
|
79
|
+
* the server has no part in a command cooldown.
|
|
80
|
+
*/
|
|
81
|
+
export declare const COMMAND_COOLDOWN_NOTICE_TEMPLATE = "Slow down. Try /{name} again in {n} s.";
|
|
82
|
+
/** Renders {@link COMMAND_COOLDOWN_NOTICE_TEMPLATE} for one refusal. */
|
|
83
|
+
export declare function commandCooldownNotice(name: string, n: number): string;
|
|
84
|
+
/**
|
|
85
|
+
* AMENDMENT-08 §5.1/§8's two new ack refusals: `cooldown` mixed with a
|
|
86
|
+
* `text`/`embeds`/`buttons` body, and a `retry_after_ms` outside
|
|
87
|
+
* `[MIN_COOLDOWN_RETRY_AFTER_MS, MAX_COOLDOWN_RETRY_AFTER_MS]`. These DO
|
|
88
|
+
* have a Go twin (`errors_v1.go`'s `CodeCooldownWithBody` /
|
|
89
|
+
* `CodeCooldownRetryAfterInvalid`, §8's table) — unlike `cooldown.ts`'s four
|
|
90
|
+
* attachment-time sentences, which never reach the wire and so are never
|
|
91
|
+
* Go's to send back. L1 has not landed `errors_v1.go`'s rows yet (verified
|
|
92
|
+
* empty on `origin/main`); these ship ahead on §8's authority, following the
|
|
93
|
+
* `NOTHING_TO_EDIT` precedent above.
|
|
94
|
+
*/
|
|
95
|
+
export declare const MIN_COOLDOWN_RETRY_AFTER_MS = 1;
|
|
96
|
+
export declare const MAX_COOLDOWN_RETRY_AFTER_MS = 60000;
|
|
97
|
+
export declare const CAP_COOLDOWN_WITH_BODY = "a cooldown ack carries no text, embeds or buttons";
|
|
98
|
+
export declare const CAP_COOLDOWN_RETRY_AFTER_INVALID = "a cooldown retry_after_ms is a whole number of milliseconds between 1 and 60000";
|
|
99
|
+
/**
|
|
100
|
+
* AMENDMENT-09 §2.1/§4.1: two caps that ship ahead of their Go rows, on the
|
|
101
|
+
* same authority as `NOTHING_TO_EDIT` and `CAP_COOLDOWN_WITH_BODY` above —
|
|
102
|
+
* verified absent on `origin/main` at `12fa7874c`. `MAX_ALIASES_PER_COMMAND`
|
|
103
|
+
* bounds how many alternate spellings one command may declare;
|
|
104
|
+
* `CAP_TOO_MANY_ALIASES` is the sentence a caller sees when they exceed it,
|
|
105
|
+
* RENDERED (not a `{max}` template) exactly as `CAP_LINK_URL_TOO_LONG` is
|
|
106
|
+
* above. `CAP_FOR_USER_NOT_MEMBER` answers a `for_user` naming someone who
|
|
107
|
+
* is not a live member of the chat at write time — no placeholder, and the
|
|
108
|
+
* SAME sentence for a nonexistent id and a real non-member (§4.1, R-8: any
|
|
109
|
+
* daylight would be an existence oracle). Both are byte-identical to
|
|
110
|
+
* `sdk/python/aurival/caps.py`'s mirrors.
|
|
111
|
+
*/
|
|
112
|
+
export declare const MAX_ALIASES_PER_COMMAND = 3;
|
|
113
|
+
export declare const CAP_TOO_MANY_ALIASES = "a command declares at most 3 aliases";
|
|
114
|
+
export declare const CAP_FOR_USER_NOT_MEMBER = "for_user must name a member of this chat";
|
|
72
115
|
//# sourceMappingURL=caps.d.ts.map
|
package/dist/caps.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caps.d.ts","sourceRoot":"","sources":["../src/caps.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,aAAa,YAAI,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAEjF,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,mBAAmB,uCAAuC,CAAC;AACxE,eAAO,MAAM,mBAAmB,6CAA6C,CAAC;AAC9E,eAAO,MAAM,oBAAoB,wCAAwC,CAAC;AAC1E,eAAO,MAAM,kBAAkB,4CAA4C,CAAC;AAC5E,eAAO,MAAM,sBAAsB,yCAAyC,CAAC;AAC7E,eAAO,MAAM,uBAAuB,gDAAgD,CAAC;AACrF,eAAO,MAAM,oBAAoB,mEACiC,CAAC;AACnE,eAAO,MAAM,kBAAkB,6CAA6C,CAAC;AAC7E,eAAO,MAAM,wBAAwB,oDAAoD,CAAC;AAC1F,eAAO,MAAM,uBAAuB,0CAA0C,CAAC;AAE/E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,wCAAwC,CAAC;AAC5E,eAAO,MAAM,qBAAqB,0CAA2D,CAAC;AAC9F,eAAO,MAAM,2BAA2B,8BAA8B,CAAC;AACvE,eAAO,MAAM,0BAA0B,qCAAqC,CAAC;AAC7E,eAAO,MAAM,wBAAwB,6CAA6C,CAAC;AACnF,eAAO,MAAM,2BAA2B,4CAA4C,CAAC;AACrF,eAAO,MAAM,2BAA2B,oDAAoD,CAAC;AAC7F,eAAO,MAAM,8BAA8B,+BAA+B,CAAC;AAE3E;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,oFAC8C,CAAC;AAEpF;;;;GAIG;AACH,eAAO,MAAM,aAAa,4CAA4C,CAAC;AAEvE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,0CAA0C,CAAC"}
|
|
1
|
+
{"version":3,"file":"caps.d.ts","sourceRoot":"","sources":["../src/caps.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,aAAa,YAAI,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAEjF,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,mBAAmB,uCAAuC,CAAC;AACxE,eAAO,MAAM,mBAAmB,6CAA6C,CAAC;AAC9E,eAAO,MAAM,oBAAoB,wCAAwC,CAAC;AAC1E,eAAO,MAAM,kBAAkB,4CAA4C,CAAC;AAC5E,eAAO,MAAM,sBAAsB,yCAAyC,CAAC;AAC7E,eAAO,MAAM,uBAAuB,gDAAgD,CAAC;AACrF,eAAO,MAAM,oBAAoB,mEACiC,CAAC;AACnE,eAAO,MAAM,kBAAkB,6CAA6C,CAAC;AAC7E,eAAO,MAAM,wBAAwB,oDAAoD,CAAC;AAC1F,eAAO,MAAM,uBAAuB,0CAA0C,CAAC;AAE/E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,wCAAwC,CAAC;AAC5E,eAAO,MAAM,qBAAqB,0CAA2D,CAAC;AAC9F,eAAO,MAAM,2BAA2B,8BAA8B,CAAC;AACvE,eAAO,MAAM,0BAA0B,qCAAqC,CAAC;AAC7E,eAAO,MAAM,wBAAwB,6CAA6C,CAAC;AACnF,eAAO,MAAM,2BAA2B,4CAA4C,CAAC;AACrF,eAAO,MAAM,2BAA2B,oDAAoD,CAAC;AAC7F,eAAO,MAAM,8BAA8B,+BAA+B,CAAC;AAE3E;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,oFAC8C,CAAC;AAEpF;;;;GAIG;AACH,eAAO,MAAM,aAAa,4CAA4C,CAAC;AAEvE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,0CAA0C,CAAC;AAEvE;;;;;;;;GAQG;AACH,eAAO,MAAM,gCAAgC,2CAA2C,CAAC;AAEzF,wEAAwE;AACxE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,2BAA2B,QAAQ,CAAC;AAEjD,eAAO,MAAM,sBAAsB,sDAAsD,CAAC;AAC1F,eAAO,MAAM,gCAAgC,oFAA0I,CAAC;AAExL;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,oBAAoB,yCAAkE,CAAC;AACpG,eAAO,MAAM,uBAAuB,6CAA6C,CAAC"}
|
package/dist/caps.js
CHANGED
|
@@ -68,4 +68,49 @@ export const EMPTY_MESSAGE = 'a message needs text, embeds or buttons';
|
|
|
68
68
|
* and this file.
|
|
69
69
|
*/
|
|
70
70
|
export const NOTHING_TO_EDIT = 'an edit needs text, embeds or buttons';
|
|
71
|
+
/**
|
|
72
|
+
* AMENDMENT-08 §4: the command-cooldown notice, sent through `ctx.reply`
|
|
73
|
+
* once per bucket per window. `{name}` is the command as the developer
|
|
74
|
+
* registered it; `{n}` is `Math.max(1, Math.ceil(retryAfterSeconds))`
|
|
75
|
+
* (`cooldown.ts`'s `roundSeconds`) — the SAME rounding rule the button
|
|
76
|
+
* toast's `{n}` uses (§5.4), stated once there. Lives byte-identically in
|
|
77
|
+
* `sdk/python/aurival/caps.py` and the docs page; never a Go template, since
|
|
78
|
+
* the server has no part in a command cooldown.
|
|
79
|
+
*/
|
|
80
|
+
export const COMMAND_COOLDOWN_NOTICE_TEMPLATE = 'Slow down. Try /{name} again in {n} s.';
|
|
81
|
+
/** Renders {@link COMMAND_COOLDOWN_NOTICE_TEMPLATE} for one refusal. */
|
|
82
|
+
export function commandCooldownNotice(name, n) {
|
|
83
|
+
return COMMAND_COOLDOWN_NOTICE_TEMPLATE.replace('{name}', name).replace('{n}', String(n));
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* AMENDMENT-08 §5.1/§8's two new ack refusals: `cooldown` mixed with a
|
|
87
|
+
* `text`/`embeds`/`buttons` body, and a `retry_after_ms` outside
|
|
88
|
+
* `[MIN_COOLDOWN_RETRY_AFTER_MS, MAX_COOLDOWN_RETRY_AFTER_MS]`. These DO
|
|
89
|
+
* have a Go twin (`errors_v1.go`'s `CodeCooldownWithBody` /
|
|
90
|
+
* `CodeCooldownRetryAfterInvalid`, §8's table) — unlike `cooldown.ts`'s four
|
|
91
|
+
* attachment-time sentences, which never reach the wire and so are never
|
|
92
|
+
* Go's to send back. L1 has not landed `errors_v1.go`'s rows yet (verified
|
|
93
|
+
* empty on `origin/main`); these ship ahead on §8's authority, following the
|
|
94
|
+
* `NOTHING_TO_EDIT` precedent above.
|
|
95
|
+
*/
|
|
96
|
+
export const MIN_COOLDOWN_RETRY_AFTER_MS = 1;
|
|
97
|
+
export const MAX_COOLDOWN_RETRY_AFTER_MS = 60000;
|
|
98
|
+
export const CAP_COOLDOWN_WITH_BODY = 'a cooldown ack carries no text, embeds or buttons';
|
|
99
|
+
export const CAP_COOLDOWN_RETRY_AFTER_INVALID = `a cooldown retry_after_ms is a whole number of milliseconds between ${MIN_COOLDOWN_RETRY_AFTER_MS} and ${MAX_COOLDOWN_RETRY_AFTER_MS}`;
|
|
100
|
+
/**
|
|
101
|
+
* AMENDMENT-09 §2.1/§4.1: two caps that ship ahead of their Go rows, on the
|
|
102
|
+
* same authority as `NOTHING_TO_EDIT` and `CAP_COOLDOWN_WITH_BODY` above —
|
|
103
|
+
* verified absent on `origin/main` at `12fa7874c`. `MAX_ALIASES_PER_COMMAND`
|
|
104
|
+
* bounds how many alternate spellings one command may declare;
|
|
105
|
+
* `CAP_TOO_MANY_ALIASES` is the sentence a caller sees when they exceed it,
|
|
106
|
+
* RENDERED (not a `{max}` template) exactly as `CAP_LINK_URL_TOO_LONG` is
|
|
107
|
+
* above. `CAP_FOR_USER_NOT_MEMBER` answers a `for_user` naming someone who
|
|
108
|
+
* is not a live member of the chat at write time — no placeholder, and the
|
|
109
|
+
* SAME sentence for a nonexistent id and a real non-member (§4.1, R-8: any
|
|
110
|
+
* daylight would be an existence oracle). Both are byte-identical to
|
|
111
|
+
* `sdk/python/aurival/caps.py`'s mirrors.
|
|
112
|
+
*/
|
|
113
|
+
export const MAX_ALIASES_PER_COMMAND = 3;
|
|
114
|
+
export const CAP_TOO_MANY_ALIASES = `a command declares at most ${MAX_ALIASES_PER_COMMAND} aliases`;
|
|
115
|
+
export const CAP_FOR_USER_NOT_MEMBER = 'for_user must name a member of this chat';
|
|
71
116
|
//# sourceMappingURL=caps.js.map
|
package/dist/caps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caps.js","sourceRoot":"","sources":["../src/caps.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAC5B,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAClC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AACpC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAC3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAIjF,MAAM,CAAC,MAAM,mBAAmB,GAAG,oCAAoC,CAAC;AACxE,MAAM,CAAC,MAAM,mBAAmB,GAAG,0CAA0C,CAAC;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,qCAAqC,CAAC;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,yCAAyC,CAAC;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,sCAAsC,CAAC;AAC7E,MAAM,CAAC,MAAM,uBAAuB,GAAG,6CAA6C,CAAC;AACrF,MAAM,CAAC,MAAM,oBAAoB,GAC/B,gEAAgE,CAAC;AACnE,MAAM,CAAC,MAAM,kBAAkB,GAAG,0CAA0C,CAAC;AAC7E,MAAM,CAAC,MAAM,wBAAwB,GAAG,iDAAiD,CAAC;AAC1F,MAAM,CAAC,MAAM,uBAAuB,GAAG,uCAAuC,CAAC;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,qCAAqC,CAAC;AAC5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,yBAAyB,kBAAkB,aAAa,CAAC;AAC9F,MAAM,CAAC,MAAM,2BAA2B,GAAG,2BAA2B,CAAC;AACvE,MAAM,CAAC,MAAM,0BAA0B,GAAG,kCAAkC,CAAC;AAC7E,MAAM,CAAC,MAAM,wBAAwB,GAAG,0CAA0C,CAAC;AACnF,MAAM,CAAC,MAAM,2BAA2B,GAAG,yCAAyC,CAAC;AACrF,MAAM,CAAC,MAAM,2BAA2B,GAAG,iDAAiD,CAAC;AAC7F,MAAM,CAAC,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GACnC,iFAAiF,CAAC;AAEpF;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,yCAAyC,CAAC;AAEvE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,uCAAuC,CAAC"}
|
|
1
|
+
{"version":3,"file":"caps.js","sourceRoot":"","sources":["../src/caps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `Cooldown` — the SDK-side rate-limit primitive (AMENDMENT-08 §2).
|
|
3
|
+
*
|
|
4
|
+
* SDK-side state only: the wire never carries a cooldown configuration, and
|
|
5
|
+
* the server never learns one exists (the one exception is the *button*
|
|
6
|
+
* cooldown ACK, whose `retry_after_ms` is computed FROM this primitive by
|
|
7
|
+
* `bot.ts` — `http.ts::ackCooldown` — never the other way around).
|
|
8
|
+
*
|
|
9
|
+
* **Buckets are process memory. They reset on restart, and they are never
|
|
10
|
+
* shared across instances or processes.** A bot running two workers behind
|
|
11
|
+
* a supervisor has two independent buckets, and a deploy clears every
|
|
12
|
+
* bucket it had. This is stated here, not buried, because a developer who
|
|
13
|
+
* assumes otherwise builds a quota on it — the server floor
|
|
14
|
+
* (`press.go`'s `ButtonPressRateLimit`) is what actually bounds abuse.
|
|
15
|
+
*
|
|
16
|
+
* This module is a leaf: it imports nothing from `embeds.ts`, `events.ts`,
|
|
17
|
+
* `http.ts` or `bot.ts`, so `Cooldown` itself never depends on the wire
|
|
18
|
+
* shapes that use it.
|
|
19
|
+
*
|
|
20
|
+
* Mirrors `sdk/python/aurival/cooldown.py` — the bucket algorithm, the key
|
|
21
|
+
* scheme, and the four cap sentences below are byte/logic-identical between
|
|
22
|
+
* the two SDKs (AMENDMENT-08's shared algorithm block). The command notice
|
|
23
|
+
* template and the two ack-refusal sentences that DO have a server twin live
|
|
24
|
+
* in `caps.ts`, not here — this file's header pins it to sentences with no
|
|
25
|
+
* server twin, exactly as `caps.ts`'s header pins it to sentences that do.
|
|
26
|
+
*/
|
|
27
|
+
/** Who a bucket is scoped to. `user` (default) is one bucket per presser/invoker; `chat` is one per conversation; `global` is one bucket for the whole attachment. */
|
|
28
|
+
export type CooldownBucket = 'user' | 'chat' | 'global';
|
|
29
|
+
/** A plain `{ rate, per, bucket? }` literal — accepted everywhere a `Cooldown` is, and normalized into one at attachment (R-2, R-7). */
|
|
30
|
+
export interface CooldownLiteral {
|
|
31
|
+
rate: number;
|
|
32
|
+
/** seconds */
|
|
33
|
+
per: number;
|
|
34
|
+
bucket?: CooldownBucket | undefined;
|
|
35
|
+
}
|
|
36
|
+
/** A `Cooldown` instance, or a literal that normalizes into one. */
|
|
37
|
+
export type CooldownLike = Cooldown | CooldownLiteral;
|
|
38
|
+
/**
|
|
39
|
+
* The tri-state a cooldown option carries at every one of the three
|
|
40
|
+
* attachment points (`Bot(buttonCooldown)`, card-level `send(...,
|
|
41
|
+
* buttonCooldown)`, `Button(cooldown)`), and at a command's own `cooldown`
|
|
42
|
+
* option: `undefined` — inherit from the level above (or "none", for a
|
|
43
|
+
* command); `null` — explicitly disabled; a `CooldownLike` — use it.
|
|
44
|
+
*/
|
|
45
|
+
export type CooldownOption = CooldownLike | null;
|
|
46
|
+
export declare const CAP_BUTTON_COOLDOWN_TOO_LONG = "a button cooldown is at most 60 seconds";
|
|
47
|
+
export declare const CAP_COOLDOWN_RATE_TOO_LOW = "a cooldown rate is at least 1";
|
|
48
|
+
export declare const CAP_COOLDOWN_PERIOD_NOT_POSITIVE = "a cooldown period is greater than zero";
|
|
49
|
+
export declare const CAP_LINK_BUTTON_COOLDOWN = "a link button cannot carry a cooldown";
|
|
50
|
+
/** §5.1: a button cooldown's `per` is bounded so the ack's `retry_after_ms` never exceeds the wire's 60000ms cap. Command cooldowns are unbounded (D13) — they never reach the wire. */
|
|
51
|
+
export declare const MAX_BUTTON_COOLDOWN_PER_SECONDS = 60;
|
|
52
|
+
/**
|
|
53
|
+
* SDK-side rate limit primitive (AMENDMENT-08 §2). One `Cooldown` instance
|
|
54
|
+
* owns its own bucket map; instances are never shared between attachments —
|
|
55
|
+
* a command's `Cooldown` is private to that command, a per-button
|
|
56
|
+
* `Cooldown` private to that button, and so on.
|
|
57
|
+
*
|
|
58
|
+
* Fixed window anchored at first use, per bucket key. Buckets and the
|
|
59
|
+
* once-per-window notice ledger both live for the process lifetime — the
|
|
60
|
+
* shared algorithm block names no eviction, so none is added here; a bot
|
|
61
|
+
* that runs for a very long time against a huge number of distinct keys
|
|
62
|
+
* accumulates entries for as long as it runs (unlike the bounded card
|
|
63
|
+
* lookup table in `bot.ts`, which is namespaced to message ids and capped).
|
|
64
|
+
*/
|
|
65
|
+
export declare class Cooldown {
|
|
66
|
+
#private;
|
|
67
|
+
readonly rate: number;
|
|
68
|
+
/** seconds */
|
|
69
|
+
readonly per: number;
|
|
70
|
+
readonly bucket: CooldownBucket;
|
|
71
|
+
/**
|
|
72
|
+
* `now` is an injectable monotonic clock (seconds), for tests only — it is
|
|
73
|
+
* deliberately not part of the documented public signature (`new
|
|
74
|
+
* Cooldown(rate, per, bucket)`, matching §2's examples byte for byte).
|
|
75
|
+
*/
|
|
76
|
+
constructor(rate: number, per: number, bucket?: CooldownBucket, now?: () => number);
|
|
77
|
+
/** An existing `Cooldown` passes through unchanged; a plain literal is validated and wrapped. */
|
|
78
|
+
static from(value: CooldownLike, now?: () => number): Cooldown;
|
|
79
|
+
/**
|
|
80
|
+
* One synchronous check-and-consume. `null` on a pass (a token was
|
|
81
|
+
* spent); the seconds remaining on a refusal. **A refusal never consumes
|
|
82
|
+
* and never touches the window** — mashing a refused key does not push
|
|
83
|
+
* the window further out.
|
|
84
|
+
*/
|
|
85
|
+
check(key: string): number | null;
|
|
86
|
+
/**
|
|
87
|
+
* The once-per-window gate for the command notice (§4): `true` only the
|
|
88
|
+
* first time it is called for this key's CURRENT window, `false` for
|
|
89
|
+
* every call after that until the window rolls over. Call this only
|
|
90
|
+
* right after a `check()` refusal on the same key — it reads the window
|
|
91
|
+
* `check()` just refused against (a refusal leaves `windowStart`
|
|
92
|
+
* untouched, so this is safe).
|
|
93
|
+
*/
|
|
94
|
+
noticeOnce(key: string): boolean;
|
|
95
|
+
}
|
|
96
|
+
/** §5's rounding rule, shared by the command sentence's `{n}` and the button ack's `retry_after_ms`: a fractional remainder always rounds UP, and never to zero — a toast or reply that says "0 s" tells the presser to retry immediately, and they would be refused again. */
|
|
97
|
+
export declare function roundSeconds(retryAfterSeconds: number): number;
|
|
98
|
+
/** `retryAfterSeconds` -> the wire's `retry_after_ms`, whole milliseconds, never zero. */
|
|
99
|
+
export declare function retryAfterMs(retryAfterSeconds: number): number;
|
|
100
|
+
/** Refused at ATTACHMENT time (§5): a button cooldown's `per` may not exceed the wire's `retry_after_ms` cap. Command cooldowns never call this — they are unbounded (D13). */
|
|
101
|
+
export declare function requireButtonCooldownBounds(cooldown: Cooldown): void;
|
|
102
|
+
/**
|
|
103
|
+
* Normalizes a tri-state `CooldownOption` at one attachment point:
|
|
104
|
+
* `undefined` stays `undefined` (inherit), `null` stays `null` (disabled), a
|
|
105
|
+
* `CooldownLike` is validated and turned into a `Cooldown`. `boundToButton`
|
|
106
|
+
* runs the 60s cap — pass it for every button-family attachment
|
|
107
|
+
* (`Bot(buttonCooldown)`, card-level, per-button) and leave it off for a
|
|
108
|
+
* command's `cooldown`, which §5 leaves unbounded.
|
|
109
|
+
*/
|
|
110
|
+
export declare function normalizeCooldownOption(value: CooldownOption | undefined, options: {
|
|
111
|
+
boundToButton: boolean;
|
|
112
|
+
}): Cooldown | null | undefined;
|
|
113
|
+
/** `bucket` + the invoking/pressing user id and the chat id -> the subject half of a key (§2's three-bucket table). */
|
|
114
|
+
export declare function subjectKey(bucket: CooldownBucket, userId: string, chatId: string): string;
|
|
115
|
+
/**
|
|
116
|
+
* A button press's full bucket key (§3): the bot-level default has
|
|
117
|
+
* `attachmentScope = ()` — one bucket per user (or chat/global) per bot,
|
|
118
|
+
* regardless of which message or button was pressed — while a card-level or
|
|
119
|
+
* per-button `Cooldown` scopes to `(messageId, buttonId)` too, because
|
|
120
|
+
* button ids are unique only WITHIN a message
|
|
121
|
+
* (`duplicate_button_id`, ERRORS-V1 §3): two cards reusing the same button
|
|
122
|
+
* id must not share a bucket.
|
|
123
|
+
*/
|
|
124
|
+
export declare function buttonBucketKey(cooldown: Cooldown, scope: {
|
|
125
|
+
messageId: string;
|
|
126
|
+
buttonId: string;
|
|
127
|
+
} | null, userId: string, chatId: string): string;
|
|
128
|
+
/** One outgoing card's recorded cooldown configuration (§3's "card lookup on press"). `undefined` in either slot means "inherits from the level above" — the bot default for `cardCooldown`, the card's own resolved cooldown for an entry missing from `byButtonId`. */
|
|
129
|
+
export interface CardCooldownRecord {
|
|
130
|
+
cardCooldown: Cooldown | null | undefined;
|
|
131
|
+
byButtonId: ReadonlyMap<string, Cooldown | null>;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Records, per outgoing message id, the card-level cooldown and any
|
|
135
|
+
* per-button overrides a `send()`/`reply()`/`ack()`/`edit()` call attached —
|
|
136
|
+
* because a `button.pressed` event carries only ids, never the `Button`
|
|
137
|
+
* objects that were sent, so precedence has to be resolved from somewhere
|
|
138
|
+
* that remembers them. Bounded LRU-ish (insertion order; `record` moves an
|
|
139
|
+
* existing key to the back) so a bot running for a long time does not grow
|
|
140
|
+
* this table without limit.
|
|
141
|
+
*/
|
|
142
|
+
export declare class CardCooldownTable {
|
|
143
|
+
#private;
|
|
144
|
+
/**
|
|
145
|
+
* `undefined` `cardCooldown` and an empty `byButtonId` together mean
|
|
146
|
+
* "nothing overrides anything on this card" — recording that is a no-op
|
|
147
|
+
* (equivalent to no entry at all, since a lookup miss already falls
|
|
148
|
+
* through to the bot default), and an existing entry for this id is
|
|
149
|
+
* cleared rather than left stale (a card edited to drop its per-button
|
|
150
|
+
* overrides must not keep the old ones).
|
|
151
|
+
*/
|
|
152
|
+
record(messageId: string, entry: CardCooldownRecord): void;
|
|
153
|
+
/** `undefined` when the message is absent from the table — restarted process, or sent by another one (§3: "fall through to the bot default"). */
|
|
154
|
+
lookup(messageId: string): CardCooldownRecord | undefined;
|
|
155
|
+
}
|
|
156
|
+
/** What a press resolved to, and whether it is scoped to `(messageId, buttonId)` when building the bucket key. */
|
|
157
|
+
export interface ResolvedButtonCooldown {
|
|
158
|
+
cooldown: Cooldown | null;
|
|
159
|
+
/** `false` only when the bot-level default is what resolved — `attachmentScope = ()` (§3). */
|
|
160
|
+
scoped: boolean;
|
|
161
|
+
}
|
|
162
|
+
/** Precedence: button > card > bot default (§3), read off the recorded card entry (or its absence). */
|
|
163
|
+
export declare function resolveButtonCooldown(botDefault: Cooldown | null, card: CardCooldownRecord | undefined, buttonId: string): ResolvedButtonCooldown;
|
|
164
|
+
//# sourceMappingURL=cooldown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cooldown.d.ts","sourceRoot":"","sources":["../src/cooldown.ts"],"names":[],"mappings":"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"}
|
package/dist/cooldown.js
ADDED
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `Cooldown` — the SDK-side rate-limit primitive (AMENDMENT-08 §2).
|
|
3
|
+
*
|
|
4
|
+
* SDK-side state only: the wire never carries a cooldown configuration, and
|
|
5
|
+
* the server never learns one exists (the one exception is the *button*
|
|
6
|
+
* cooldown ACK, whose `retry_after_ms` is computed FROM this primitive by
|
|
7
|
+
* `bot.ts` — `http.ts::ackCooldown` — never the other way around).
|
|
8
|
+
*
|
|
9
|
+
* **Buckets are process memory. They reset on restart, and they are never
|
|
10
|
+
* shared across instances or processes.** A bot running two workers behind
|
|
11
|
+
* a supervisor has two independent buckets, and a deploy clears every
|
|
12
|
+
* bucket it had. This is stated here, not buried, because a developer who
|
|
13
|
+
* assumes otherwise builds a quota on it — the server floor
|
|
14
|
+
* (`press.go`'s `ButtonPressRateLimit`) is what actually bounds abuse.
|
|
15
|
+
*
|
|
16
|
+
* This module is a leaf: it imports nothing from `embeds.ts`, `events.ts`,
|
|
17
|
+
* `http.ts` or `bot.ts`, so `Cooldown` itself never depends on the wire
|
|
18
|
+
* shapes that use it.
|
|
19
|
+
*
|
|
20
|
+
* Mirrors `sdk/python/aurival/cooldown.py` — the bucket algorithm, the key
|
|
21
|
+
* scheme, and the four cap sentences below are byte/logic-identical between
|
|
22
|
+
* the two SDKs (AMENDMENT-08's shared algorithm block). The command notice
|
|
23
|
+
* template and the two ack-refusal sentences that DO have a server twin live
|
|
24
|
+
* in `caps.ts`, not here — this file's header pins it to sentences with no
|
|
25
|
+
* server twin, exactly as `caps.ts`'s header pins it to sentences that do.
|
|
26
|
+
*/
|
|
27
|
+
export const CAP_BUTTON_COOLDOWN_TOO_LONG = 'a button cooldown is at most 60 seconds';
|
|
28
|
+
export const CAP_COOLDOWN_RATE_TOO_LOW = 'a cooldown rate is at least 1';
|
|
29
|
+
export const CAP_COOLDOWN_PERIOD_NOT_POSITIVE = 'a cooldown period is greater than zero';
|
|
30
|
+
export const CAP_LINK_BUTTON_COOLDOWN = 'a link button cannot carry a cooldown';
|
|
31
|
+
/** §5.1: a button cooldown's `per` is bounded so the ack's `retry_after_ms` never exceeds the wire's 60000ms cap. Command cooldowns are unbounded (D13) — they never reach the wire. */
|
|
32
|
+
export const MAX_BUTTON_COOLDOWN_PER_SECONDS = 60;
|
|
33
|
+
/** Seconds, monotonic. `performance.now()` never goes backwards and needs no epoch. */
|
|
34
|
+
function defaultClock() {
|
|
35
|
+
return performance.now() / 1000;
|
|
36
|
+
}
|
|
37
|
+
/** One key's scope + subject, joined with a separator no id in this SDK can contain (`msg_…`/`btn ids`/`usr_…`/`chat_…` are all `[a-zA-Z0-9_-]`). */
|
|
38
|
+
const KEY_SEP = ' ';
|
|
39
|
+
/**
|
|
40
|
+
* SDK-side rate limit primitive (AMENDMENT-08 §2). One `Cooldown` instance
|
|
41
|
+
* owns its own bucket map; instances are never shared between attachments —
|
|
42
|
+
* a command's `Cooldown` is private to that command, a per-button
|
|
43
|
+
* `Cooldown` private to that button, and so on.
|
|
44
|
+
*
|
|
45
|
+
* Fixed window anchored at first use, per bucket key. Buckets and the
|
|
46
|
+
* once-per-window notice ledger both live for the process lifetime — the
|
|
47
|
+
* shared algorithm block names no eviction, so none is added here; a bot
|
|
48
|
+
* that runs for a very long time against a huge number of distinct keys
|
|
49
|
+
* accumulates entries for as long as it runs (unlike the bounded card
|
|
50
|
+
* lookup table in `bot.ts`, which is namespaced to message ids and capped).
|
|
51
|
+
*/
|
|
52
|
+
export class Cooldown {
|
|
53
|
+
rate;
|
|
54
|
+
/** seconds */
|
|
55
|
+
per;
|
|
56
|
+
bucket;
|
|
57
|
+
#now;
|
|
58
|
+
#buckets = new Map();
|
|
59
|
+
#notified = new Map();
|
|
60
|
+
/**
|
|
61
|
+
* `now` is an injectable monotonic clock (seconds), for tests only — it is
|
|
62
|
+
* deliberately not part of the documented public signature (`new
|
|
63
|
+
* Cooldown(rate, per, bucket)`, matching §2's examples byte for byte).
|
|
64
|
+
*/
|
|
65
|
+
constructor(rate, per, bucket = 'user', now = defaultClock) {
|
|
66
|
+
if (rate < 1)
|
|
67
|
+
throw new Error(CAP_COOLDOWN_RATE_TOO_LOW);
|
|
68
|
+
if (!(per > 0))
|
|
69
|
+
throw new Error(CAP_COOLDOWN_PERIOD_NOT_POSITIVE);
|
|
70
|
+
this.rate = rate;
|
|
71
|
+
this.per = per;
|
|
72
|
+
this.bucket = bucket;
|
|
73
|
+
this.#now = now;
|
|
74
|
+
}
|
|
75
|
+
/** An existing `Cooldown` passes through unchanged; a plain literal is validated and wrapped. */
|
|
76
|
+
static from(value, now) {
|
|
77
|
+
if (value instanceof Cooldown)
|
|
78
|
+
return value;
|
|
79
|
+
return now === undefined
|
|
80
|
+
? new Cooldown(value.rate, value.per, value.bucket ?? 'user')
|
|
81
|
+
: new Cooldown(value.rate, value.per, value.bucket ?? 'user', now);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* One synchronous check-and-consume. `null` on a pass (a token was
|
|
85
|
+
* spent); the seconds remaining on a refusal. **A refusal never consumes
|
|
86
|
+
* and never touches the window** — mashing a refused key does not push
|
|
87
|
+
* the window further out.
|
|
88
|
+
*/
|
|
89
|
+
check(key) {
|
|
90
|
+
const now = this.#now();
|
|
91
|
+
let state = this.#buckets.get(key);
|
|
92
|
+
if (state === undefined || now - state.windowStart >= this.per) {
|
|
93
|
+
state = { windowStart: now, tokens: this.rate };
|
|
94
|
+
this.#buckets.set(key, state);
|
|
95
|
+
}
|
|
96
|
+
if (state.tokens === 0) {
|
|
97
|
+
return this.per - (now - state.windowStart);
|
|
98
|
+
}
|
|
99
|
+
state.tokens -= 1;
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* The once-per-window gate for the command notice (§4): `true` only the
|
|
104
|
+
* first time it is called for this key's CURRENT window, `false` for
|
|
105
|
+
* every call after that until the window rolls over. Call this only
|
|
106
|
+
* right after a `check()` refusal on the same key — it reads the window
|
|
107
|
+
* `check()` just refused against (a refusal leaves `windowStart`
|
|
108
|
+
* untouched, so this is safe).
|
|
109
|
+
*/
|
|
110
|
+
noticeOnce(key) {
|
|
111
|
+
const windowStart = this.#buckets.get(key)?.windowStart ?? this.#now();
|
|
112
|
+
if (this.#notified.get(key) === windowStart)
|
|
113
|
+
return false;
|
|
114
|
+
this.#notified.set(key, windowStart);
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/** §5's rounding rule, shared by the command sentence's `{n}` and the button ack's `retry_after_ms`: a fractional remainder always rounds UP, and never to zero — a toast or reply that says "0 s" tells the presser to retry immediately, and they would be refused again. */
|
|
119
|
+
export function roundSeconds(retryAfterSeconds) {
|
|
120
|
+
return Math.max(1, Math.ceil(retryAfterSeconds));
|
|
121
|
+
}
|
|
122
|
+
/** `retryAfterSeconds` -> the wire's `retry_after_ms`, whole milliseconds, never zero. */
|
|
123
|
+
export function retryAfterMs(retryAfterSeconds) {
|
|
124
|
+
return Math.max(1, Math.ceil(retryAfterSeconds * 1000));
|
|
125
|
+
}
|
|
126
|
+
/** Refused at ATTACHMENT time (§5): a button cooldown's `per` may not exceed the wire's `retry_after_ms` cap. Command cooldowns never call this — they are unbounded (D13). */
|
|
127
|
+
export function requireButtonCooldownBounds(cooldown) {
|
|
128
|
+
if (cooldown.per > MAX_BUTTON_COOLDOWN_PER_SECONDS)
|
|
129
|
+
throw new Error(CAP_BUTTON_COOLDOWN_TOO_LONG);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Normalizes a tri-state `CooldownOption` at one attachment point:
|
|
133
|
+
* `undefined` stays `undefined` (inherit), `null` stays `null` (disabled), a
|
|
134
|
+
* `CooldownLike` is validated and turned into a `Cooldown`. `boundToButton`
|
|
135
|
+
* runs the 60s cap — pass it for every button-family attachment
|
|
136
|
+
* (`Bot(buttonCooldown)`, card-level, per-button) and leave it off for a
|
|
137
|
+
* command's `cooldown`, which §5 leaves unbounded.
|
|
138
|
+
*/
|
|
139
|
+
export function normalizeCooldownOption(value, options) {
|
|
140
|
+
if (value === undefined)
|
|
141
|
+
return undefined;
|
|
142
|
+
if (value === null)
|
|
143
|
+
return null;
|
|
144
|
+
const cooldown = Cooldown.from(value);
|
|
145
|
+
if (options.boundToButton)
|
|
146
|
+
requireButtonCooldownBounds(cooldown);
|
|
147
|
+
return cooldown;
|
|
148
|
+
}
|
|
149
|
+
/** `bucket` + the invoking/pressing user id and the chat id -> the subject half of a key (§2's three-bucket table). */
|
|
150
|
+
export function subjectKey(bucket, userId, chatId) {
|
|
151
|
+
if (bucket === 'user')
|
|
152
|
+
return `user${KEY_SEP}${userId}`;
|
|
153
|
+
if (bucket === 'chat')
|
|
154
|
+
return `chat${KEY_SEP}${chatId}`;
|
|
155
|
+
return 'global';
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* A button press's full bucket key (§3): the bot-level default has
|
|
159
|
+
* `attachmentScope = ()` — one bucket per user (or chat/global) per bot,
|
|
160
|
+
* regardless of which message or button was pressed — while a card-level or
|
|
161
|
+
* per-button `Cooldown` scopes to `(messageId, buttonId)` too, because
|
|
162
|
+
* button ids are unique only WITHIN a message
|
|
163
|
+
* (`duplicate_button_id`, ERRORS-V1 §3): two cards reusing the same button
|
|
164
|
+
* id must not share a bucket.
|
|
165
|
+
*/
|
|
166
|
+
export function buttonBucketKey(cooldown, scope, userId, chatId) {
|
|
167
|
+
const subject = subjectKey(cooldown.bucket, userId, chatId);
|
|
168
|
+
return scope === null
|
|
169
|
+
? subject
|
|
170
|
+
: `${scope.messageId}${KEY_SEP}${scope.buttonId}${KEY_SEP}${subject}`;
|
|
171
|
+
}
|
|
172
|
+
/** §3: "bound the table (LRU cap ~1024 messages) so a long-lived bot does not grow without limit." */
|
|
173
|
+
const CARD_TABLE_CAP = 1024;
|
|
174
|
+
/**
|
|
175
|
+
* Records, per outgoing message id, the card-level cooldown and any
|
|
176
|
+
* per-button overrides a `send()`/`reply()`/`ack()`/`edit()` call attached —
|
|
177
|
+
* because a `button.pressed` event carries only ids, never the `Button`
|
|
178
|
+
* objects that were sent, so precedence has to be resolved from somewhere
|
|
179
|
+
* that remembers them. Bounded LRU-ish (insertion order; `record` moves an
|
|
180
|
+
* existing key to the back) so a bot running for a long time does not grow
|
|
181
|
+
* this table without limit.
|
|
182
|
+
*/
|
|
183
|
+
export class CardCooldownTable {
|
|
184
|
+
#entries = new Map();
|
|
185
|
+
/**
|
|
186
|
+
* `undefined` `cardCooldown` and an empty `byButtonId` together mean
|
|
187
|
+
* "nothing overrides anything on this card" — recording that is a no-op
|
|
188
|
+
* (equivalent to no entry at all, since a lookup miss already falls
|
|
189
|
+
* through to the bot default), and an existing entry for this id is
|
|
190
|
+
* cleared rather than left stale (a card edited to drop its per-button
|
|
191
|
+
* overrides must not keep the old ones).
|
|
192
|
+
*/
|
|
193
|
+
record(messageId, entry) {
|
|
194
|
+
if (messageId === '')
|
|
195
|
+
return;
|
|
196
|
+
this.#entries.delete(messageId);
|
|
197
|
+
if (entry.cardCooldown === undefined && entry.byButtonId.size === 0)
|
|
198
|
+
return;
|
|
199
|
+
this.#entries.set(messageId, entry);
|
|
200
|
+
while (this.#entries.size > CARD_TABLE_CAP) {
|
|
201
|
+
const oldest = this.#entries.keys().next().value;
|
|
202
|
+
if (oldest === undefined)
|
|
203
|
+
break;
|
|
204
|
+
this.#entries.delete(oldest);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/** `undefined` when the message is absent from the table — restarted process, or sent by another one (§3: "fall through to the bot default"). */
|
|
208
|
+
lookup(messageId) {
|
|
209
|
+
return this.#entries.get(messageId);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/** Precedence: button > card > bot default (§3), read off the recorded card entry (or its absence). */
|
|
213
|
+
export function resolveButtonCooldown(botDefault, card, buttonId) {
|
|
214
|
+
const buttonOverride = card?.byButtonId.get(buttonId);
|
|
215
|
+
if (buttonOverride !== undefined)
|
|
216
|
+
return { cooldown: buttonOverride, scoped: true };
|
|
217
|
+
if (card?.cardCooldown !== undefined)
|
|
218
|
+
return { cooldown: card.cardCooldown, scoped: true };
|
|
219
|
+
return { cooldown: botDefault, scoped: false };
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=cooldown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cooldown.js","sourceRoot":"","sources":["../src/cooldown.ts"],"names":[],"mappings":"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"}
|