chz-telegram-bot 0.0.1 → 0.0.3

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.
Files changed (105) hide show
  1. package/dist/entities/actions/commandAction.d.ts +22 -0
  2. package/dist/entities/actions/commandAction.d.ts.map +1 -0
  3. package/dist/entities/actions/commandAction.js +2 -3
  4. package/dist/entities/actions/scheduledAction.d.ts +24 -0
  5. package/dist/entities/actions/scheduledAction.d.ts.map +1 -0
  6. package/dist/entities/actions/scheduledAction.js +2 -3
  7. package/dist/entities/bot.d.ts +27 -0
  8. package/dist/entities/bot.d.ts.map +1 -0
  9. package/dist/entities/bot.js +14 -10
  10. package/dist/entities/cachedStateFactory.d.ts +7 -0
  11. package/dist/entities/cachedStateFactory.d.ts.map +1 -0
  12. package/dist/entities/commandTriggerCheckResult.d.ts +10 -0
  13. package/dist/entities/commandTriggerCheckResult.d.ts.map +1 -0
  14. package/dist/entities/context/chatContext.d.ts +15 -0
  15. package/dist/entities/context/chatContext.d.ts.map +1 -0
  16. package/dist/entities/context/chatContext.js +2 -1
  17. package/dist/entities/context/messageContext.d.ts +22 -0
  18. package/dist/entities/context/messageContext.d.ts.map +1 -0
  19. package/dist/entities/context/messageContext.js +3 -4
  20. package/dist/entities/incomingMessage.d.ts +16 -0
  21. package/dist/entities/incomingMessage.d.ts.map +1 -0
  22. package/dist/entities/incomingMessage.js +2 -5
  23. package/dist/entities/responses/imageMessage.d.ts +10 -0
  24. package/dist/entities/responses/imageMessage.d.ts.map +1 -0
  25. package/dist/entities/responses/reaction.d.ts +9 -0
  26. package/dist/entities/responses/reaction.d.ts.map +1 -0
  27. package/dist/entities/responses/textMessage.d.ts +9 -0
  28. package/dist/entities/responses/textMessage.d.ts.map +1 -0
  29. package/dist/entities/responses/videoMessage.d.ts +10 -0
  30. package/dist/entities/responses/videoMessage.d.ts.map +1 -0
  31. package/dist/entities/states/actionStateBase.d.ts +5 -0
  32. package/dist/entities/states/actionStateBase.d.ts.map +1 -0
  33. package/dist/entities/taskRecord.d.ts +8 -0
  34. package/dist/entities/taskRecord.d.ts.map +1 -0
  35. package/dist/entities/transactionResult.d.ts +7 -0
  36. package/dist/entities/transactionResult.d.ts.map +1 -0
  37. package/dist/helpers/builders/commandActionBuilder.d.ts +30 -0
  38. package/dist/helpers/builders/commandActionBuilder.d.ts.map +1 -0
  39. package/dist/helpers/builders/scheduledActionBuilder.d.ts +20 -0
  40. package/dist/helpers/builders/scheduledActionBuilder.d.ts.map +1 -0
  41. package/dist/helpers/noop.d.ts +7 -0
  42. package/dist/helpers/noop.d.ts.map +1 -0
  43. package/dist/helpers/reverseMap.d.ts +2 -0
  44. package/dist/helpers/reverseMap.d.ts.map +1 -0
  45. package/dist/helpers/timeConvertions.d.ts +5 -0
  46. package/dist/helpers/timeConvertions.d.ts.map +1 -0
  47. package/dist/helpers/toArray.d.ts +2 -0
  48. package/dist/helpers/toArray.d.ts.map +1 -0
  49. package/dist/index.d.ts +15 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +19 -28
  52. package/dist/main.d.ts +8 -0
  53. package/dist/main.d.ts.map +1 -0
  54. package/dist/main.js +37 -0
  55. package/dist/services/jsonFileStorage.d.ts +23 -0
  56. package/dist/services/jsonFileStorage.d.ts.map +1 -0
  57. package/dist/services/{storage.js → jsonFileStorage.js} +13 -11
  58. package/dist/services/logger.d.ts +7 -0
  59. package/dist/services/logger.d.ts.map +1 -0
  60. package/dist/services/taskScheduler.d.ts +11 -0
  61. package/dist/services/taskScheduler.d.ts.map +1 -0
  62. package/dist/services/telegramApi.d.ts +27 -0
  63. package/dist/services/telegramApi.d.ts.map +1 -0
  64. package/dist/services/telegramApi.js +4 -3
  65. package/dist/types/actionState.d.ts +4 -0
  66. package/dist/types/actionState.d.ts.map +1 -0
  67. package/dist/types/actionWithState.d.ts +6 -0
  68. package/dist/types/actionWithState.d.ts.map +1 -0
  69. package/dist/types/cachedValueAccessor.d.ts +2 -0
  70. package/dist/types/cachedValueAccessor.d.ts.map +1 -0
  71. package/dist/types/commandCondition.d.ts +4 -0
  72. package/dist/types/commandCondition.d.ts.map +1 -0
  73. package/dist/types/daysOfTheWeek.d.ts +10 -0
  74. package/dist/types/daysOfTheWeek.d.ts.map +1 -0
  75. package/dist/types/handlers.d.ts +7 -0
  76. package/dist/types/handlers.d.ts.map +1 -0
  77. package/dist/types/replyMessage.d.ts +7 -0
  78. package/dist/types/replyMessage.d.ts.map +1 -0
  79. package/dist/types/storage.d.ts +12 -0
  80. package/dist/types/storage.d.ts.map +1 -0
  81. package/dist/types/timeValues.d.ts +11 -0
  82. package/dist/types/timeValues.d.ts.map +1 -0
  83. package/entities/actions/commandAction.ts +4 -5
  84. package/entities/actions/scheduledAction.ts +2 -3
  85. package/entities/bot.ts +39 -24
  86. package/entities/context/chatContext.ts +5 -1
  87. package/entities/context/messageContext.ts +10 -6
  88. package/entities/incomingMessage.ts +2 -2
  89. package/index.ts +28 -47
  90. package/main.ts +48 -0
  91. package/package.json +1 -2
  92. package/services/{storage.ts → jsonFileStorage.ts} +20 -14
  93. package/services/telegramApi.ts +8 -2
  94. package/tsconfig.json +2 -2
  95. package/types/storage.ts +19 -0
  96. package/dist/entities/states/potuzhnoState.js +0 -13
  97. package/dist/helpers/escapeMarkdown.js +0 -17
  98. package/dist/helpers/getWeek.js +0 -12
  99. package/dist/helpers/randomInt.js +0 -8
  100. package/entities/states/potuzhnoState.ts +0 -5
  101. package/helpers/escapeMarkdown.ts +0 -12
  102. package/helpers/getWeek.ts +0 -8
  103. package/helpers/randomInt.ts +0 -7
  104. package/types/scheduledItem.ts +0 -6
  105. /package/dist/types/{scheduledItem.js → storage.js} +0 -0
@@ -0,0 +1,22 @@
1
+ import MessageContext from '../context/messageContext';
2
+ import IActionWithState from '../../types/actionWithState';
3
+ import IActionState from '../../types/actionState';
4
+ import { CommandHandler } from '../../types/handlers';
5
+ import { CommandCondition } from '../../types/commandCondition';
6
+ import { Seconds } from '../../types/timeValues';
7
+ export default class CommandAction<TActionState extends IActionState> implements IActionWithState {
8
+ triggers: (string | RegExp)[];
9
+ handler: CommandHandler<TActionState>;
10
+ name: string;
11
+ cooldownInSeconds: Seconds;
12
+ active: boolean;
13
+ chatsBlacklist: number[];
14
+ allowedUsers: number[];
15
+ condition: CommandCondition<TActionState>;
16
+ stateConstructor: () => TActionState;
17
+ key: string;
18
+ constructor(trigger: string | RegExp | Array<string> | Array<RegExp>, handler: CommandHandler<TActionState>, name: string, active: boolean, cooldown: Seconds, chatsBlacklist: Array<number>, allowedUsers: Array<number>, condition: CommandCondition<TActionState>, stateConstructor: () => TActionState);
19
+ exec(ctx: MessageContext<TActionState>): Promise<void>;
20
+ private checkTrigger;
21
+ }
22
+ //# sourceMappingURL=commandAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandAction.d.ts","sourceRoot":"","sources":["../../../entities/actions/commandAction.ts"],"names":[],"mappings":"AAGA,OAAO,cAAc,MAAM,2BAA2B,CAAC;AACvD,OAAO,gBAAgB,MAAM,6BAA6B,CAAC;AAE3D,OAAO,YAAY,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,aAAa,CAAC,YAAY,SAAS,YAAY,CAChE,YAAW,gBAAgB;IAE3B,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC9B,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC1C,gBAAgB,EAAE,MAAM,YAAY,CAAC;IACrC,GAAG,EAAE,MAAM,CAAC;gBAGR,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EACxD,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,OAAO,EACjB,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAC7B,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,EAC3B,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC,EACzC,gBAAgB,EAAE,MAAM,YAAY;IAelC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,YAAY,CAAC;IAgD5C,OAAO,CAAC,YAAY;CA0CvB"}
@@ -3,7 +3,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const storage_1 = __importDefault(require("../../services/storage"));
7
6
  const transactionResult_1 = __importDefault(require("../transactionResult"));
8
7
  const moment_1 = __importDefault(require("moment"));
9
8
  const logger_1 = __importDefault(require("../../services/logger"));
@@ -29,7 +28,7 @@ class CommandAction {
29
28
  const isConditionMet = await this.condition(ctx);
30
29
  if (!isConditionMet)
31
30
  return;
32
- const state = await storage_1.default.getActionState(this, ctx.chatId);
31
+ const state = await ctx.storage.getActionState(this, ctx.chatId);
33
32
  const { shouldTrigger, matchResults, skipCooldown } = this.triggers
34
33
  .map((x) => this.checkTrigger(ctx, x, state))
35
34
  .reduce((acc, curr) => acc.mergeWith(curr), commandTriggerCheckResult_1.default.DoNotTrigger);
@@ -45,7 +44,7 @@ class CommandAction {
45
44
  state.lastExecutedDate = (0, moment_1.default)().valueOf();
46
45
  }
47
46
  ctx.updateActions.forEach((action) => action(state));
48
- await storage_1.default.commitTransactionForAction(this, ctx.chatId, new transactionResult_1.default(state, ctx.startCooldown && shouldTrigger));
47
+ await ctx.storage.saveActionExecutionResult(this, ctx.chatId, new transactionResult_1.default(state, ctx.startCooldown && shouldTrigger));
49
48
  }
50
49
  checkTrigger(ctx, trigger, state) {
51
50
  let shouldTrigger = false;
@@ -0,0 +1,24 @@
1
+ import { Sema as Semaphore } from 'async-sema';
2
+ import ChatContext from '../context/chatContext';
3
+ import IActionWithState from '../../types/actionWithState';
4
+ import ActionStateBase from '../states/actionStateBase';
5
+ import { ScheduledHandler } from '../../types/handlers';
6
+ import CachedStateFactory from '../cachedStateFactory';
7
+ import { HoursOfDay } from '../../types/timeValues';
8
+ export default class ScheduledAction implements IActionWithState {
9
+ static semaphore: Semaphore;
10
+ name: string;
11
+ timeinHours: HoursOfDay;
12
+ active: boolean;
13
+ chatsWhitelist: number[];
14
+ key: string;
15
+ cachedState: Map<string, unknown>;
16
+ stateConstructor: () => ActionStateBase;
17
+ cachedStateFactories: Map<string, CachedStateFactory>;
18
+ handler: ScheduledHandler;
19
+ constructor(name: string, handler: ScheduledHandler, timeinHours: HoursOfDay, active: boolean, whitelist: number[], cachedStateFactories: Map<string, CachedStateFactory>);
20
+ exec(ctx: ChatContext): Promise<void>;
21
+ private getCachedValue;
22
+ private shouldTrigger;
23
+ }
24
+ //# sourceMappingURL=scheduledAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduledAction.d.ts","sourceRoot":"","sources":["../../../entities/actions/scheduledAction.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,gBAAgB,MAAM,6BAA6B,CAAC;AAC3D,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,kBAAkB,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,eAAgB,YAAW,gBAAgB;IAC5D,MAAM,CAAC,SAAS,YAAoB;IAEpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IAEZ,WAAW,uBAA8B;IACzC,gBAAgB,wBAA+B;IAC/C,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACtD,OAAO,EAAE,gBAAgB,CAAC;gBAGtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,gBAAgB,EACzB,WAAW,EAAE,UAAU,EACvB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EAAE,EACnB,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAWnD,IAAI,CAAC,GAAG,EAAE,WAAW;YA4Bb,cAAc;IAqC5B,OAAO,CAAC,aAAa;CASxB"}
@@ -3,7 +3,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const storage_1 = __importDefault(require("../../services/storage"));
7
6
  const transactionResult_1 = __importDefault(require("../transactionResult"));
8
7
  const moment_1 = __importDefault(require("moment"));
9
8
  const logger_1 = __importDefault(require("../../services/logger"));
@@ -26,13 +25,13 @@ class ScheduledAction {
26
25
  async exec(ctx) {
27
26
  if (!this.active || !this.chatsWhitelist.includes(ctx.chatId))
28
27
  return;
29
- const state = await storage_1.default.getActionState(this, ctx.chatId);
28
+ const state = await ctx.storage.getActionState(this, ctx.chatId);
30
29
  const isAllowedToTrigger = this.shouldTrigger(state);
31
30
  if (isAllowedToTrigger) {
32
31
  logger_1.default.logWithTraceId(ctx.botName, ctx.traceId, ctx.chatName, ` - Executing [${this.name}] in ${ctx.chatId}`);
33
32
  await this.handler(ctx, (key) => this.getCachedValue(key, ctx.botName));
34
33
  state.lastExecutedDate = (0, moment_1.default)().valueOf();
35
- await storage_1.default.commitTransactionForAction(this, ctx.chatId, new transactionResult_1.default(state, isAllowedToTrigger));
34
+ await ctx.storage.saveActionExecutionResult(this, ctx.chatId, new transactionResult_1.default(state, isAllowedToTrigger));
36
35
  }
37
36
  }
38
37
  async getCachedValue(key, botName) {
@@ -0,0 +1,27 @@
1
+ import CommandAction from './actions/commandAction';
2
+ import ScheduledAction from './actions/scheduledAction';
3
+ import IActionState from '../types/actionState';
4
+ import { IStorageClient } from '../types/storage';
5
+ export default class Bot {
6
+ name: string;
7
+ private api;
8
+ private telegraf;
9
+ private commands;
10
+ private scheduled;
11
+ private chats;
12
+ private messageQueue;
13
+ storage: IStorageClient;
14
+ constructor(options: {
15
+ name: string;
16
+ token: string;
17
+ commands: CommandAction<IActionState>[];
18
+ scheduled: ScheduledAction[];
19
+ chats: Map<string, number>;
20
+ storageClient?: IStorageClient;
21
+ storagePath?: string;
22
+ });
23
+ stop(code: string): Promise<void>;
24
+ private runScheduled;
25
+ private processMessages;
26
+ }
27
+ //# sourceMappingURL=bot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../entities/bot.ts"],"names":[],"mappings":"AAKA,OAAO,aAAa,MAAM,yBAAyB,CAAC;AACpD,OAAO,eAAe,MAAM,2BAA2B,CAAC;AACxD,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAOhD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,EAAE,cAAc,CAAC;gBAEZ,OAAO,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;QACxC,SAAS,EAAE,eAAe,EAAE,CAAC;QAC7B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3B,aAAa,CAAC,EAAE,cAAc,CAAC;QAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;KACxB;IAuEK,IAAI,CAAC,IAAI,EAAE,MAAM;YAYT,YAAY;YAqBZ,eAAe;CAmBhC"}
@@ -9,17 +9,20 @@ const incomingMessage_1 = __importDefault(require("./incomingMessage"));
9
9
  const taskScheduler_1 = __importDefault(require("../services/taskScheduler"));
10
10
  const logger_1 = __importDefault(require("../services/logger"));
11
11
  const timeConvertions_1 = require("../helpers/timeConvertions");
12
- const storage_1 = __importDefault(require("../services/storage"));
12
+ const jsonFileStorage_1 = __importDefault(require("../services/jsonFileStorage"));
13
13
  class Bot {
14
- constructor(name, token, commands, scheduled, chats) {
14
+ constructor(options) {
15
15
  this.messageQueue = [];
16
- this.name = name;
17
- this.commands = commands;
18
- this.scheduled = scheduled;
19
- this.chats = chats;
16
+ this.name = options.name;
17
+ this.commands = options.commands;
18
+ this.scheduled = options.scheduled;
19
+ this.chats = options.chats;
20
20
  logger_1.default.logWithTraceId(this.name, `System:Bot-${this.name}-Start`, 'System', 'Starting bot...');
21
- this.telegraf = new telegraf_1.Telegraf(token);
22
- this.api = new telegramApi_1.default(this.name, this.telegraf, this.chats);
21
+ this.telegraf = new telegraf_1.Telegraf(options.token);
22
+ this.storage =
23
+ options.storageClient ??
24
+ new jsonFileStorage_1.default(options.name, options.storagePath);
25
+ this.api = new telegramApi_1.default(this.name, this.telegraf, this.storage, this.chats);
23
26
  this.telegraf.on('message', async (ctx) => {
24
27
  const msg = new incomingMessage_1.default(ctx.update.message);
25
28
  const messageContent = msg.text || '<non-text message>';
@@ -39,10 +42,11 @@ class Bot {
39
42
  taskScheduler_1.default.createTask('ScheduledProcessing', async () => {
40
43
  await this.runScheduled();
41
44
  }, (0, timeConvertions_1.hoursToMilliseconds)(0.5), true, this.name);
42
- storage_1.default.saveMetadata([...this.commands, ...this.scheduled], this.name);
45
+ this.storage.saveMetadata([...this.commands, ...this.scheduled], this.name);
43
46
  }
44
- stop(code) {
47
+ async stop(code) {
45
48
  logger_1.default.logWithTraceId(this.name, `System:Bot-${this.name}-Stop`, 'System', 'Stopping bot...');
49
+ await this.storage.close();
46
50
  this.telegraf.stop(code);
47
51
  }
48
52
  async runScheduled() {
@@ -0,0 +1,7 @@
1
+ import { Hours } from '../types/timeValues';
2
+ export default class CachedStateFactory {
3
+ getValue: () => Promise<unknown>;
4
+ invalidationTimeoutInHours: Hours;
5
+ constructor(itemFactory: () => Promise<unknown>, invalidationTimeout: Hours);
6
+ }
7
+ //# sourceMappingURL=cachedStateFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cachedStateFactory.d.ts","sourceRoot":"","sources":["../../entities/cachedStateFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,kBAAkB;IACnC,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,0BAA0B,EAAE,KAAK,CAAC;gBAG9B,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EACnC,mBAAmB,EAAE,KAAK;CAKjC"}
@@ -0,0 +1,10 @@
1
+ export default class CommandTriggerCheckResult {
2
+ static get DontTriggerAndSkipCooldown(): CommandTriggerCheckResult;
3
+ static get DoNotTrigger(): CommandTriggerCheckResult;
4
+ shouldTrigger: boolean;
5
+ matchResults: RegExpExecArray[];
6
+ skipCooldown: boolean;
7
+ constructor(shouldTrigger: boolean, matchResults: RegExpExecArray[], skipCooldown: boolean);
8
+ mergeWith(other: CommandTriggerCheckResult): this;
9
+ }
10
+ //# sourceMappingURL=commandTriggerCheckResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandTriggerCheckResult.d.ts","sourceRoot":"","sources":["../../entities/commandTriggerCheckResult.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,yBAAyB;IAC1C,MAAM,KAAK,0BAA0B,8BAEpC;IACD,MAAM,KAAK,YAAY,8BAEtB;IAED,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,YAAY,EAAE,OAAO,CAAC;gBAGlB,aAAa,EAAE,OAAO,EACtB,YAAY,EAAE,eAAe,EAAE,EAC/B,YAAY,EAAE,OAAO;IAOzB,SAAS,CAAC,KAAK,EAAE,yBAAyB;CAO7C"}
@@ -0,0 +1,15 @@
1
+ import { IBotApiInteractions } from '../../services/telegramApi';
2
+ import { IStorageClient } from '../../types/storage';
3
+ export default class ChatContext {
4
+ botName: string;
5
+ interactions: IBotApiInteractions;
6
+ chatId: number;
7
+ chatName: string;
8
+ traceId: number | string;
9
+ storage: IStorageClient;
10
+ constructor(botName: string, interactions: IBotApiInteractions, chatId: number, chatName: string, traceId: number | string, storage: IStorageClient);
11
+ sendTextToChat(text: string): void;
12
+ sendImageToChat(name: string): void;
13
+ sendVideoToChat(name: string): void;
14
+ }
15
+ //# sourceMappingURL=chatContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatContext.d.ts","sourceRoot":"","sources":["../../../entities/context/chatContext.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,CAAC,OAAO,OAAO,WAAW;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,mBAAmB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,OAAO,EAAE,cAAc,CAAC;gBAGpB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,mBAAmB,EACjC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,OAAO,EAAE,cAAc;IAU3B,cAAc,CAAC,IAAI,EAAE,MAAM;IAM3B,eAAe,CAAC,IAAI,EAAE,MAAM;IAY5B,eAAe,CAAC,IAAI,EAAE,MAAM;CAW/B"}
@@ -8,12 +8,13 @@ const textMessage_1 = __importDefault(require("../responses/textMessage"));
8
8
  const videoMessage_1 = __importDefault(require("../responses/videoMessage"));
9
9
  const path_1 = require("path");
10
10
  class ChatContext {
11
- constructor(botName, interactions, chatId, chatName, traceId) {
11
+ constructor(botName, interactions, chatId, chatName, traceId, storage) {
12
12
  this.botName = botName;
13
13
  this.interactions = interactions;
14
14
  this.chatId = chatId;
15
15
  this.chatName = chatName;
16
16
  this.traceId = traceId;
17
+ this.storage = storage;
17
18
  }
18
19
  sendTextToChat(text) {
19
20
  this.interactions.respond(new textMessage_1.default(text, this.chatId, undefined, this.traceId));
@@ -0,0 +1,22 @@
1
+ import ChatContext from './chatContext';
2
+ import IActionState from '../../types/actionState';
3
+ import { IBotApiInteractions } from '../../services/telegramApi';
4
+ import { TelegramEmoji } from 'telegraf/types';
5
+ import { IStorageClient } from '../../types/storage';
6
+ export default class MessageContext<TActionState extends IActionState> extends ChatContext {
7
+ messageId: number;
8
+ messageText: string;
9
+ matchResults: RegExpMatchArray[];
10
+ fromUserId: number | undefined;
11
+ startCooldown: boolean;
12
+ updateActions: Array<(state: TActionState) => void>;
13
+ fromUserName: string;
14
+ constructor(botName: string, interactions: IBotApiInteractions, chatId: number, chatName: string, messageId: number, messageText: string, fromUserId: number | undefined, traceId: number | string, fromUserName: string, storage: IStorageClient);
15
+ loadStateOf<TAnotherActionState extends IActionState>(commandName: string): Promise<TAnotherActionState>;
16
+ updateState(stateUpdateAction: (state: TActionState) => void): void;
17
+ replyWithText(text: string): void;
18
+ replyWithImage(name: string): void;
19
+ replyWithVideo(name: string): void;
20
+ react(emoji: TelegramEmoji): void;
21
+ }
22
+ //# sourceMappingURL=messageContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageContext.d.ts","sourceRoot":"","sources":["../../../entities/context/messageContext.ts"],"names":[],"mappings":"AAIA,OAAO,WAAW,MAAM,eAAe,CAAC;AAGxC,OAAO,YAAY,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,CAAC,OAAO,OAAO,cAAc,CAC/B,YAAY,SAAS,YAAY,CACnC,SAAQ,WAAW;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,gBAAgB,EAAE,CAAM;IACtC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,aAAa,EAAE,OAAO,CAAQ;IAC9B,aAAa,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC,CAAM;IACzD,YAAY,EAAE,MAAM,CAAC;gBAGjB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,mBAAmB,EACjC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,cAAc;IAUrB,WAAW,CAAC,mBAAmB,SAAS,YAAY,EACtD,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,mBAAmB,CAAC;IAU/B,WAAW,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI;IAM5D,aAAa,CAAC,IAAI,EAAE,MAAM;IAM1B,cAAc,CAAC,IAAI,EAAE,MAAM;IAY3B,cAAc,CAAC,IAAI,EAAE,MAAM;IAY3B,KAAK,CAAC,KAAK,EAAE,aAAa;CAK7B"}
@@ -8,12 +8,11 @@ const imageMessage_1 = __importDefault(require("../responses/imageMessage"));
8
8
  const textMessage_1 = __importDefault(require("../responses/textMessage"));
9
9
  const videoMessage_1 = __importDefault(require("../responses/videoMessage"));
10
10
  const chatContext_1 = __importDefault(require("./chatContext"));
11
- const storage_1 = __importDefault(require("../../services/storage"));
12
11
  const path_1 = require("path");
13
12
  const reaction_1 = __importDefault(require("../responses/reaction"));
14
13
  class MessageContext extends chatContext_1.default {
15
- constructor(botName, interactions, chatId, chatName, messageId, messageText, fromUserId, traceId, fromUserName) {
16
- super(botName, interactions, chatId, chatName, traceId);
14
+ constructor(botName, interactions, chatId, chatName, messageId, messageText, fromUserId, traceId, fromUserName, storage) {
15
+ super(botName, interactions, chatId, chatName, traceId, storage);
17
16
  this.matchResults = [];
18
17
  this.startCooldown = true;
19
18
  this.updateActions = [];
@@ -23,7 +22,7 @@ class MessageContext extends chatContext_1.default {
23
22
  this.fromUserName = fromUserName;
24
23
  }
25
24
  async loadStateOf(commandName) {
26
- return ((await storage_1.default.load(`command:${commandName.replace('.', '-')}`))[this.chatId] ?? new actionStateBase_1.default());
25
+ return ((await this.storage.load(`command:${commandName.replace('.', '-')}`))[this.chatId] ?? new actionStateBase_1.default());
27
26
  }
28
27
  updateState(stateUpdateAction) {
29
28
  this.updateActions.push(stateUpdateAction);
@@ -0,0 +1,16 @@
1
+ import { Chat, User } from 'telegraf/types';
2
+ export default class IncomingMessage {
3
+ message_id: number;
4
+ chat: Chat;
5
+ from: User | undefined;
6
+ text: string;
7
+ chatName: string;
8
+ traceId: number;
9
+ constructor(ctxMessage: {
10
+ message_id: number;
11
+ chat: Chat;
12
+ from?: User;
13
+ text?: string;
14
+ });
15
+ }
16
+ //# sourceMappingURL=incomingMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incomingMessage.d.ts","sourceRoot":"","sources":["../../entities/incomingMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAG5C,MAAM,CAAC,OAAO,OAAO,eAAe;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,SAA2B;gBAEtB,UAAU,EAAE;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,IAAI,CAAC;QACX,IAAI,CAAC,EAAE,IAAI,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB;CAUJ"}
@@ -1,12 +1,9 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const randomInt_1 = __importDefault(require("../helpers/randomInt"));
3
+ const crypto_1 = require("crypto");
7
4
  class IncomingMessage {
8
5
  constructor(ctxMessage) {
9
- this.traceId = (0, randomInt_1.default)(10000, 99999);
6
+ this.traceId = (0, crypto_1.randomInt)(10000, 99999);
10
7
  this.message_id = ctxMessage.message_id;
11
8
  this.chat = ctxMessage.chat;
12
9
  this.from = ctxMessage.from;
@@ -0,0 +1,10 @@
1
+ import { InputFile } from 'telegraf/types';
2
+ import IReplyMessage from '../../types/replyMessage';
3
+ export default class ImageMessage implements IReplyMessage<InputFile> {
4
+ content: InputFile;
5
+ chatId: number;
6
+ replyId: number | undefined;
7
+ traceId: string | number;
8
+ constructor(image: InputFile, chatId: number, replyId: number | undefined, traceId: number | string);
9
+ }
10
+ //# sourceMappingURL=imageMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageMessage.d.ts","sourceRoot":"","sources":["../../../entities/responses/imageMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,aAAa,MAAM,0BAA0B,CAAC;AAErD,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,aAAa,CAAC,SAAS,CAAC;IACjE,OAAO,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;gBAGrB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,MAAM,GAAG,MAAM;CAO/B"}
@@ -0,0 +1,9 @@
1
+ import { TelegramEmoji } from 'telegraf/types';
2
+ export default class Reaction {
3
+ chatId: number;
4
+ messageId: number;
5
+ traceId: number | string;
6
+ emoji: TelegramEmoji;
7
+ constructor(traceId: number | string, chatId: number, messageId: number, emoji: TelegramEmoji);
8
+ }
9
+ //# sourceMappingURL=reaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reaction.d.ts","sourceRoot":"","sources":["../../../entities/responses/reaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,CAAC,OAAO,OAAO,QAAQ;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,KAAK,EAAE,aAAa,CAAC;gBAGjB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa;CAO3B"}
@@ -0,0 +1,9 @@
1
+ import IReplyMessage from '../../types/replyMessage';
2
+ export default class TextMessage implements IReplyMessage<string> {
3
+ content: string;
4
+ chatId: number;
5
+ replyId: number | undefined;
6
+ traceId: string | number;
7
+ constructor(text: string, chatId: number, replyId: number | undefined, traceId: string | number);
8
+ }
9
+ //# sourceMappingURL=textMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textMessage.d.ts","sourceRoot":"","sources":["../../../entities/responses/textMessage.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,0BAA0B,CAAC;AAErD,MAAM,CAAC,OAAO,OAAO,WAAY,YAAW,aAAa,CAAC,MAAM,CAAC;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;gBAGrB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,MAAM,GAAG,MAAM;CAO/B"}
@@ -0,0 +1,10 @@
1
+ import { InputFile } from 'telegraf/types';
2
+ import IReplyMessage from '../../types/replyMessage';
3
+ export default class VideoMessage implements IReplyMessage<InputFile> {
4
+ content: InputFile;
5
+ chatId: number;
6
+ replyId: number | undefined;
7
+ traceId: string | number;
8
+ constructor(video: InputFile, chatId: number, replyId: number | undefined, traceId: number | string);
9
+ }
10
+ //# sourceMappingURL=videoMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoMessage.d.ts","sourceRoot":"","sources":["../../../entities/responses/videoMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,aAAa,MAAM,0BAA0B,CAAC;AAErD,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,aAAa,CAAC,SAAS,CAAC;IACjE,OAAO,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;gBAGrB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,MAAM,GAAG,MAAM;CAO/B"}
@@ -0,0 +1,5 @@
1
+ import IActionState from '../../types/actionState';
2
+ export default class ActionStateBase implements IActionState {
3
+ lastExecutedDate: number;
4
+ }
5
+ //# sourceMappingURL=actionStateBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionStateBase.d.ts","sourceRoot":"","sources":["../../../entities/states/actionStateBase.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,yBAAyB,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,eAAgB,YAAW,YAAY;IACxD,gBAAgB,SAAK;CACxB"}
@@ -0,0 +1,8 @@
1
+ import { Milliseconds } from '../types/timeValues';
2
+ export default class TaskRecord {
3
+ name: string;
4
+ taskId: NodeJS.Timeout;
5
+ interval: Milliseconds;
6
+ constructor(name: string, taskId: NodeJS.Timeout, interval: Milliseconds);
7
+ }
8
+ //# sourceMappingURL=taskRecord.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taskRecord.d.ts","sourceRoot":"","sources":["../../entities/taskRecord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,UAAU;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;gBAEX,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY;CAK3E"}
@@ -0,0 +1,7 @@
1
+ import IActionState from '../types/actionState';
2
+ export default class TransactionResult {
3
+ data: IActionState;
4
+ shouldUpdate: boolean;
5
+ constructor(data: IActionState, shouldUpdate: boolean);
6
+ }
7
+ //# sourceMappingURL=transactionResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionResult.d.ts","sourceRoot":"","sources":["../../entities/transactionResult.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAClC,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;gBAEV,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO;CAIxD"}
@@ -0,0 +1,30 @@
1
+ import CommandAction from '../../entities/actions/commandAction';
2
+ import ActionStateBase from '../../entities/states/actionStateBase';
3
+ import IActionState from '../../types/actionState';
4
+ import { CommandHandler } from '../../types/handlers';
5
+ import { CommandCondition } from '../../types/commandCondition';
6
+ import { Seconds } from '../../types/timeValues';
7
+ export declare class CommandActionBuilderWithState<TActionState extends IActionState> {
8
+ name: string;
9
+ trigger: string | RegExp | Array<string> | Array<RegExp>;
10
+ active: boolean;
11
+ cooldownSeconds: Seconds;
12
+ blacklist: number[];
13
+ allowedUsers: number[];
14
+ stateConstructor: () => TActionState;
15
+ handler: CommandHandler<TActionState>;
16
+ condition: CommandCondition<TActionState>;
17
+ constructor(name: string, stateConstructor: () => TActionState);
18
+ on(trigger: string | RegExp | Array<string> | Array<RegExp>): this;
19
+ from(id: number | Array<number>): this;
20
+ do(handler: CommandHandler<TActionState>): this;
21
+ when(condition: CommandCondition<TActionState>): this;
22
+ disabled(): this;
23
+ cooldown(seconds: Seconds): this;
24
+ ignoreChat(chatId: number): this;
25
+ build(): CommandAction<TActionState>;
26
+ }
27
+ export declare class CommandActionBuilder extends CommandActionBuilderWithState<ActionStateBase> {
28
+ constructor(name: string);
29
+ }
30
+ //# sourceMappingURL=commandActionBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandActionBuilder.d.ts","sourceRoot":"","sources":["../../../helpers/builders/commandActionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,sCAAsC,CAAC;AACjE,OAAO,eAAe,MAAM,uCAAuC,CAAC;AAEpE,OAAO,YAAY,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGjD,qBAAa,6BAA6B,CAAC,YAAY,SAAS,YAAY;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAM;IAE9D,MAAM,UAAQ;IACd,eAAe,EAAE,OAAO,CAAgB;IACxC,SAAS,EAAE,MAAM,EAAE,CAAM;IACzB,YAAY,EAAE,MAAM,EAAE,CAAM;IAC5B,gBAAgB,EAAE,MAAM,YAAY,CAAC;IACrC,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,CAAa;IAClD,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAa;gBAE1C,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,YAAY;IAK9D,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAM3D,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAM/B,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC;IAMxC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC;IAM9C,QAAQ;IAMR,QAAQ,CAAC,OAAO,EAAE,OAAO;IAMzB,UAAU,CAAC,MAAM,EAAE,MAAM;IAMzB,KAAK;CAaR;AAED,qBAAa,oBAAqB,SAAQ,6BAA6B,CAAC,eAAe,CAAC;gBACxE,IAAI,EAAE,MAAM;CAG3B"}
@@ -0,0 +1,20 @@
1
+ import ScheduledAction from '../../entities/actions/scheduledAction';
2
+ import CachedStateFactory from '../../entities/cachedStateFactory';
3
+ import { ScheduledHandler } from '../../types/handlers';
4
+ import { Hours, HoursOfDay } from '../../types/timeValues';
5
+ export default class ScheduledActionBuilder {
6
+ active: boolean;
7
+ time: HoursOfDay;
8
+ cachedStateFactories: Map<string, CachedStateFactory>;
9
+ whitelist: number[];
10
+ handler: ScheduledHandler;
11
+ name: string;
12
+ constructor(name: string);
13
+ allowIn(chatId: number): this;
14
+ runAt(time: HoursOfDay): this;
15
+ do(handler: ScheduledHandler): this;
16
+ withSharedCache(key: string, itemFactory: () => Promise<unknown>, invalidationTimeoutInHours?: Hours): this;
17
+ disabled(): this;
18
+ build(): ScheduledAction;
19
+ }
20
+ //# sourceMappingURL=scheduledActionBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduledActionBuilder.d.ts","sourceRoot":"","sources":["../../../helpers/builders/scheduledActionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,wCAAwC,CAAC;AACrE,OAAO,kBAAkB,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAG3D,MAAM,CAAC,OAAO,OAAO,sBAAsB;IACvC,MAAM,UAAQ;IACd,IAAI,EAAE,UAAU,CAAK;IACrB,oBAAoB,kCAAyC;IAC7D,SAAS,EAAE,MAAM,EAAE,CAAM;IACzB,OAAO,EAAE,gBAAgB,CAAa;IAEtC,IAAI,EAAE,MAAM,CAAC;gBAED,IAAI,EAAE,MAAM;IAIxB,OAAO,CAAC,MAAM,EAAE,MAAM;IAMtB,KAAK,CAAC,IAAI,EAAE,UAAU;IAMtB,EAAE,CAAC,OAAO,EAAE,gBAAgB;IAM5B,eAAe,CACX,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EACnC,0BAA0B,GAAE,KAAmB;IAUnD,QAAQ;IAMR,KAAK;CAUR"}
@@ -0,0 +1,7 @@
1
+ declare class Noop {
2
+ static true<T1>(arg1: T1): Promise<boolean>;
3
+ static false<T1>(arg1: T1): Promise<boolean>;
4
+ static call<T1, T2>(arg1: T1, arg2: T2): Promise<void>;
5
+ }
6
+ export default Noop;
7
+ //# sourceMappingURL=noop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop.d.ts","sourceRoot":"","sources":["../../helpers/noop.ts"],"names":[],"mappings":"AACA,cAAM,IAAI;WACO,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;WAGjB,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;WAGlB,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAE/D;AAED,eAAe,IAAI,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function reverseMap<K, V>(map: Map<K, V>): Map<V, K>;
2
+ //# sourceMappingURL=reverseMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reverseMap.d.ts","sourceRoot":"","sources":["../../helpers/reverseMap.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAE1D"}
@@ -0,0 +1,5 @@
1
+ import { Hours, Milliseconds, Seconds } from '../types/timeValues';
2
+ export declare function secondsToMilliseconds(value: Seconds): Milliseconds;
3
+ export declare function hoursToMilliseconds(value: Hours): Milliseconds;
4
+ export declare function hoursToSeconds(value: Hours): Seconds;
5
+ //# sourceMappingURL=timeConvertions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeConvertions.d.ts","sourceRoot":"","sources":["../../helpers/timeConvertions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAElE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CAE9D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAEpD"}
@@ -0,0 +1,2 @@
1
+ export default function toArray<TType>(value: TType | TType[]): TType[];
2
+ //# sourceMappingURL=toArray.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toArray.d.ts","sourceRoot":"","sources":["../../helpers/toArray.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,WAE5D"}
@@ -0,0 +1,15 @@
1
+ import { startBot, stopBots } from './main';
2
+ import { CommandActionBuilder } from './helpers/builders/commandActionBuilder';
3
+ import { CommandActionBuilderWithState } from './helpers/builders/commandActionBuilder';
4
+ import ScheduledActionBuilder from './helpers/builders/scheduledActionBuilder';
5
+ import { hoursToMilliseconds, hoursToSeconds, secondsToMilliseconds } from './helpers/timeConvertions';
6
+ import Noop from './helpers/noop';
7
+ import { IStorageClient } from './types/storage';
8
+ declare const helpers: {
9
+ hoursToMilliseconds: typeof hoursToMilliseconds;
10
+ hoursToSeconds: typeof hoursToSeconds;
11
+ secondsToMilliseconds: typeof secondsToMilliseconds;
12
+ Noop: typeof Noop;
13
+ };
14
+ export { startBot, stopBots, CommandActionBuilder, CommandActionBuilderWithState, ScheduledActionBuilder, IStorageClient as IStorage, helpers };
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,yCAAyC,CAAC;AACxF,OAAO,sBAAsB,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EACH,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,IAAI,MAAM,gBAAgB,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,QAAA,MAAM,OAAO;;;;;CAKZ,CAAC;AAEF,OAAO,EACH,QAAQ,EACR,QAAQ,EACR,oBAAoB,EACpB,6BAA6B,EAC7B,sBAAsB,EACtB,cAAc,IAAI,QAAQ,EAC1B,OAAO,EACV,CAAC"}