chz-telegram-bot 0.5.1 → 0.5.2

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 (89) hide show
  1. package/dist/builtin/helpAction.js +3 -6
  2. package/dist/dtos/chatHistoryMessage.js +1 -5
  3. package/dist/dtos/chatInfo.js +1 -5
  4. package/dist/dtos/commandTriggerCheckResult.js +1 -5
  5. package/dist/dtos/cooldownInfo.js +1 -5
  6. package/dist/dtos/incomingMessage.js +21 -25
  7. package/dist/dtos/incomingQuery.js +1 -5
  8. package/dist/dtos/messageInfo.js +1 -5
  9. package/dist/dtos/propertyProviderSets.js +1 -2
  10. package/dist/dtos/replyInfo.js +1 -5
  11. package/dist/dtos/responses/delay.js +3 -7
  12. package/dist/dtos/responses/imageMessage.js +3 -7
  13. package/dist/dtos/responses/inlineQueryResponse.js +3 -7
  14. package/dist/dtos/responses/reaction.js +3 -7
  15. package/dist/dtos/responses/textMessage.js +3 -7
  16. package/dist/dtos/responses/unpin.js +3 -7
  17. package/dist/dtos/responses/videoMessage.js +3 -7
  18. package/dist/dtos/userInfo.js +1 -5
  19. package/dist/entities/actions/commandAction.js +32 -39
  20. package/dist/entities/actions/inlineQueryAction.js +4 -8
  21. package/dist/entities/actions/replyCaptureAction.js +10 -14
  22. package/dist/entities/actions/scheduledAction.js +16 -23
  23. package/dist/entities/botInstance.js +13 -17
  24. package/dist/entities/cachedStateFactory.js +1 -5
  25. package/dist/entities/context/baseContext.d.ts +1 -1
  26. package/dist/entities/context/baseContext.d.ts.map +1 -1
  27. package/dist/entities/context/baseContext.js +1 -5
  28. package/dist/entities/context/chatContext.js +13 -17
  29. package/dist/entities/context/inlineQueryContext.js +4 -8
  30. package/dist/entities/context/messageContext.js +15 -19
  31. package/dist/entities/context/replyContext.js +15 -19
  32. package/dist/entities/states/actionStateBase.js +1 -5
  33. package/dist/entities/taskRecord.js +1 -5
  34. package/dist/eslint.config.d.ts +3 -0
  35. package/dist/eslint.config.d.ts.map +1 -0
  36. package/dist/eslint.config.js +51 -0
  37. package/dist/helpers/builders/commandActionBuilder.js +15 -20
  38. package/dist/helpers/builders/inlineQueryActionBuilder.js +5 -9
  39. package/dist/helpers/builders/scheduledActionBuilder.js +10 -15
  40. package/dist/helpers/mapUtils.js +2 -6
  41. package/dist/helpers/noop.js +1 -5
  42. package/dist/helpers/objectFromEntries.js +1 -5
  43. package/dist/helpers/timeConvertions.js +3 -8
  44. package/dist/helpers/toArray.js +1 -4
  45. package/dist/helpers/traceFactory.js +1 -4
  46. package/dist/index.d.ts +3 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +20 -41
  49. package/dist/main.js +5 -8
  50. package/dist/services/actionProcessingService.js +15 -19
  51. package/dist/services/actionProcessors/baseProcessor.js +1 -5
  52. package/dist/services/actionProcessors/commandActionProcessor.d.ts.map +1 -1
  53. package/dist/services/actionProcessors/commandActionProcessor.js +35 -38
  54. package/dist/services/actionProcessors/inlineQueryActionProcessor.js +7 -11
  55. package/dist/services/actionProcessors/scheduledActionProcessor.js +12 -19
  56. package/dist/services/jsonFileStorage.js +15 -19
  57. package/dist/services/jsonLogger.js +1 -5
  58. package/dist/services/nodeTimeoutScheduler.js +9 -13
  59. package/dist/services/responseProcessingQueue.js +3 -7
  60. package/dist/services/telegramApi.js +5 -9
  61. package/dist/types/action.js +1 -2
  62. package/dist/types/actionState.js +1 -2
  63. package/dist/types/cachedValueAccessor.js +1 -2
  64. package/dist/types/capture.js +1 -2
  65. package/dist/types/commandCondition.js +1 -2
  66. package/dist/types/commandTrigger.js +1 -2
  67. package/dist/types/externalAliases.js +1 -2
  68. package/dist/types/handlers.js +1 -2
  69. package/dist/types/inputFile.js +1 -2
  70. package/dist/types/logger.js +1 -2
  71. package/dist/types/messageSendingOptions.js +1 -2
  72. package/dist/types/messageTypes.js +17 -20
  73. package/dist/types/propertyProvider.js +1 -2
  74. package/dist/types/response.js +1 -4
  75. package/dist/types/scheduler.js +1 -2
  76. package/dist/types/storage.js +1 -2
  77. package/dist/types/timeValues.js +1 -2
  78. package/dist/types/trace.js +1 -2
  79. package/entities/botInstance.ts +1 -1
  80. package/entities/context/messageContext.ts +3 -3
  81. package/entities/context/replyContext.ts +3 -3
  82. package/{eslint.config.js → eslint.config.ts} +8 -5
  83. package/index.ts +3 -0
  84. package/package.json +2 -1
  85. package/services/actionProcessors/commandActionProcessor.ts +5 -6
  86. package/services/jsonFileStorage.ts +1 -1
  87. package/services/nodeTimeoutScheduler.ts +2 -2
  88. package/tsconfig.json +2 -2
  89. package/bun.lock +0 -301
@@ -1,18 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ScheduledActionBuilder = exports.ScheduledActionBuilderWithState = void 0;
4
- const scheduledAction_1 = require("../../entities/actions/scheduledAction");
5
- const cachedStateFactory_1 = require("../../entities/cachedStateFactory");
6
- const actionStateBase_1 = require("../../entities/states/actionStateBase");
7
- const noop_1 = require("../noop");
1
+ import { ScheduledAction } from '../../entities/actions/scheduledAction';
2
+ import { CachedStateFactory } from '../../entities/cachedStateFactory';
3
+ import { ActionStateBase } from '../../entities/states/actionStateBase';
4
+ import { Noop } from '../noop';
8
5
  /**
9
6
  * Builder for `ScheduledAction` with state represented by `TActionState`
10
7
  */
11
- class ScheduledActionBuilderWithState {
8
+ export class ScheduledActionBuilderWithState {
12
9
  name;
13
10
  cachedStateFactories = new Map();
14
11
  stateConstructor;
15
- handler = noop_1.Noop.call;
12
+ handler = Noop.call;
16
13
  whitelistProvider = () => [];
17
14
  activeProvider = () => true;
18
15
  timeinHoursProvider = () => 0;
@@ -56,7 +53,7 @@ class ScheduledActionBuilderWithState {
56
53
  * @param invalidationTimeoutInHours Timeout for cache invalidation.
57
54
  */
58
55
  withSharedCache(key, itemFactory, invalidationTimeoutInHours = 20) {
59
- this.cachedStateFactories.set(key, new cachedStateFactory_1.CachedStateFactory(itemFactory, invalidationTimeoutInHours));
56
+ this.cachedStateFactories.set(key, new CachedStateFactory(itemFactory, invalidationTimeoutInHours));
60
57
  return this;
61
58
  }
62
59
  /** If called during building, action is marked as disabled and never checked. */
@@ -78,23 +75,21 @@ class ScheduledActionBuilderWithState {
78
75
  }
79
76
  /** Builds action */
80
77
  build() {
81
- return new scheduledAction_1.ScheduledAction(this.name, this.handler, {
78
+ return new ScheduledAction(this.name, this.handler, {
82
79
  chatsWhitelistProvider: this.whitelistProvider,
83
80
  isActiveProvider: this.activeProvider,
84
81
  timeinHoursProvider: this.timeinHoursProvider
85
82
  }, this.cachedStateFactories, this.stateConstructor);
86
83
  }
87
84
  }
88
- exports.ScheduledActionBuilderWithState = ScheduledActionBuilderWithState;
89
85
  /**
90
86
  * Builder for `ScheduledAction` with state represented by default state (containing only last execution date).
91
87
  */
92
- class ScheduledActionBuilder extends ScheduledActionBuilderWithState {
88
+ export class ScheduledActionBuilder extends ScheduledActionBuilderWithState {
93
89
  /**
94
90
  * Builder for `ScheduledAction` with state represented by default state (containing only last execution date).
95
91
  */
96
92
  constructor(name) {
97
- super(name, () => new actionStateBase_1.ActionStateBase());
93
+ super(name, () => new ActionStateBase());
98
94
  }
99
95
  }
100
- exports.ScheduledActionBuilder = ScheduledActionBuilder;
@@ -1,15 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getOrSetIfNotExists = getOrSetIfNotExists;
4
- exports.getOrThrow = getOrThrow;
5
- function getOrSetIfNotExists(map, key, fallback) {
1
+ export function getOrSetIfNotExists(map, key, fallback) {
6
2
  const existingValue = map.get(key);
7
3
  if (existingValue)
8
4
  return existingValue;
9
5
  map.set(key, fallback);
10
6
  return fallback;
11
7
  }
12
- function getOrThrow(map, key, error = 'Key not found in collection') {
8
+ export function getOrThrow(map, key, error = 'Key not found in collection') {
13
9
  const existingValue = map.get(key);
14
10
  if (existingValue)
15
11
  return existingValue;
@@ -1,9 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Noop = void 0;
4
1
  /* eslint-disable @typescript-eslint/no-unused-vars */
5
2
  // eslint-disable-next-line @typescript-eslint/no-extraneous-class
6
- class Noop {
3
+ export class Noop {
7
4
  static NoResponse = [];
8
5
  static true(arg1) {
9
6
  return true;
@@ -18,4 +15,3 @@ class Noop {
18
15
  return Promise.resolve();
19
16
  }
20
17
  }
21
- exports.Noop = Noop;
@@ -1,7 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.typeSafeObjectFromEntries = void 0;
4
- const typeSafeObjectFromEntries = (entries) => {
1
+ export const typeSafeObjectFromEntries = (entries) => {
5
2
  return Object.fromEntries(entries);
6
3
  };
7
- exports.typeSafeObjectFromEntries = typeSafeObjectFromEntries;
@@ -1,14 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.secondsToMilliseconds = secondsToMilliseconds;
4
- exports.hoursToMilliseconds = hoursToMilliseconds;
5
- exports.hoursToSeconds = hoursToSeconds;
6
- function secondsToMilliseconds(value) {
1
+ export function secondsToMilliseconds(value) {
7
2
  return (value * 1000);
8
3
  }
9
- function hoursToMilliseconds(value) {
4
+ export function hoursToMilliseconds(value) {
10
5
  return (value * 60 * 60 * 1000);
11
6
  }
12
- function hoursToSeconds(value) {
7
+ export function hoursToSeconds(value) {
13
8
  return (value * 60 * 60);
14
9
  }
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toArray = toArray;
4
- function toArray(value) {
1
+ export function toArray(value) {
5
2
  return Array.isArray(value) ? value : [value];
6
3
  }
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createTrace = createTrace;
4
- function createTrace(traceOwner, botName, traceName) {
1
+ export function createTrace(traceOwner, botName, traceName) {
5
2
  return `${typeof traceOwner == 'string' ? traceOwner : traceOwner.constructor.name}:${botName}-${traceName}`;
6
3
  }
package/dist/index.d.ts CHANGED
@@ -8,6 +8,9 @@ export * from './types/messageTypes';
8
8
  export * from './helpers/timeConvertions';
9
9
  export * from './types/action';
10
10
  export * from './types/externalAliases';
11
+ export * from './types/storage';
12
+ export * from './types/logger';
13
+ export * from './types/scheduler';
11
14
  export { CommandAction } from './entities/actions/commandAction';
12
15
  export { InlineQueryAction } from './entities/actions/inlineQueryAction';
13
16
  export { ReplyCaptureAction } from './entities/actions/replyCaptureAction';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,6CAA6C,CAAC;AAC5D,cAAc,yCAAyC,CAAC;AACxD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,qBAAqB,CAAC;AACpC,cAAc,mCAAmC,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,6CAA6C,CAAC;AAC5D,cAAc,yCAAyC,CAAC;AACxD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,qBAAqB,CAAC;AACpC,cAAc,mCAAmC,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -1,41 +1,20 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.UserInfo = exports.MessageInfo = exports.ChatInfo = exports.ScheduledAction = exports.ReplyCaptureAction = exports.InlineQueryAction = exports.CommandAction = void 0;
18
- __exportStar(require("./main"), exports);
19
- __exportStar(require("./helpers/builders/inlineQueryActionBuilder"), exports);
20
- __exportStar(require("./helpers/builders/commandActionBuilder"), exports);
21
- __exportStar(require("./helpers/builders/scheduledActionBuilder"), exports);
22
- __exportStar(require("./types/actionState"), exports);
23
- __exportStar(require("./entities/states/actionStateBase"), exports);
24
- __exportStar(require("./types/messageTypes"), exports);
25
- __exportStar(require("./helpers/timeConvertions"), exports);
26
- __exportStar(require("./types/action"), exports);
27
- __exportStar(require("./types/externalAliases"), exports);
28
- var commandAction_1 = require("./entities/actions/commandAction");
29
- Object.defineProperty(exports, "CommandAction", { enumerable: true, get: function () { return commandAction_1.CommandAction; } });
30
- var inlineQueryAction_1 = require("./entities/actions/inlineQueryAction");
31
- Object.defineProperty(exports, "InlineQueryAction", { enumerable: true, get: function () { return inlineQueryAction_1.InlineQueryAction; } });
32
- var replyCaptureAction_1 = require("./entities/actions/replyCaptureAction");
33
- Object.defineProperty(exports, "ReplyCaptureAction", { enumerable: true, get: function () { return replyCaptureAction_1.ReplyCaptureAction; } });
34
- var scheduledAction_1 = require("./entities/actions/scheduledAction");
35
- Object.defineProperty(exports, "ScheduledAction", { enumerable: true, get: function () { return scheduledAction_1.ScheduledAction; } });
36
- var chatInfo_1 = require("./dtos/chatInfo");
37
- Object.defineProperty(exports, "ChatInfo", { enumerable: true, get: function () { return chatInfo_1.ChatInfo; } });
38
- var messageInfo_1 = require("./dtos/messageInfo");
39
- Object.defineProperty(exports, "MessageInfo", { enumerable: true, get: function () { return messageInfo_1.MessageInfo; } });
40
- var userInfo_1 = require("./dtos/userInfo");
41
- Object.defineProperty(exports, "UserInfo", { enumerable: true, get: function () { return userInfo_1.UserInfo; } });
1
+ export * from './main';
2
+ export * from './helpers/builders/inlineQueryActionBuilder';
3
+ export * from './helpers/builders/commandActionBuilder';
4
+ export * from './helpers/builders/scheduledActionBuilder';
5
+ export * from './types/actionState';
6
+ export * from './entities/states/actionStateBase';
7
+ export * from './types/messageTypes';
8
+ export * from './helpers/timeConvertions';
9
+ export * from './types/action';
10
+ export * from './types/externalAliases';
11
+ export * from './types/storage';
12
+ export * from './types/logger';
13
+ export * from './types/scheduler';
14
+ export { CommandAction } from './entities/actions/commandAction';
15
+ export { InlineQueryAction } from './entities/actions/inlineQueryAction';
16
+ export { ReplyCaptureAction } from './entities/actions/replyCaptureAction';
17
+ export { ScheduledAction } from './entities/actions/scheduledAction';
18
+ export { ChatInfo } from './dtos/chatInfo';
19
+ export { MessageInfo } from './dtos/messageInfo';
20
+ export { UserInfo } from './dtos/userInfo';
package/dist/main.js CHANGED
@@ -1,16 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.botOrchestrator = void 0;
4
- const promises_1 = require("fs/promises");
5
- const botInstance_1 = require("./entities/botInstance");
1
+ import { readFile } from 'fs/promises';
2
+ import { BotInstance } from './entities/botInstance';
6
3
  class BotOrchestrator {
7
4
  bots = [];
8
5
  /**
9
6
  * Starts bot
10
7
  */
11
8
  async startBot(options) {
12
- const token = await (0, promises_1.readFile)(options.tokenFilePath, 'utf8');
13
- const bot = new botInstance_1.BotInstance({
9
+ const token = await readFile(options.tokenFilePath, 'utf8');
10
+ const bot = new BotInstance({
14
11
  name: options.name,
15
12
  actions: options.actions,
16
13
  chats: options.chats,
@@ -34,4 +31,4 @@ class BotOrchestrator {
34
31
  }
35
32
  }
36
33
  }
37
- exports.botOrchestrator = new BotOrchestrator();
34
+ export const botOrchestrator = new BotOrchestrator();
@@ -1,14 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ActionProcessingService = void 0;
4
- const timeConvertions_1 = require("../helpers/timeConvertions");
5
- const telegramApi_1 = require("./telegramApi");
6
- const helpAction_1 = require("../builtin/helpAction");
7
- const commandActionProcessor_1 = require("./actionProcessors/commandActionProcessor");
8
- const inlineQueryActionProcessor_1 = require("./actionProcessors/inlineQueryActionProcessor");
9
- const scheduledActionProcessor_1 = require("./actionProcessors/scheduledActionProcessor");
10
- const telegraf_1 = require("telegraf");
11
- class ActionProcessingService {
1
+ import { hoursToSeconds } from '../helpers/timeConvertions';
2
+ import { TelegramApiService } from './telegramApi';
3
+ import { buildHelpCommand } from '../builtin/helpAction';
4
+ import { CommandActionProcessor } from './actionProcessors/commandActionProcessor';
5
+ import { InlineQueryActionProcessor } from './actionProcessors/inlineQueryActionProcessor';
6
+ import { ScheduledActionProcessor } from './actionProcessors/scheduledActionProcessor';
7
+ import { Telegraf } from 'telegraf';
8
+ export class ActionProcessingService {
12
9
  storage;
13
10
  logger;
14
11
  commandProcessor;
@@ -19,20 +16,20 @@ class ActionProcessingService {
19
16
  constructor(botName, chats, storage, scheduler, logger) {
20
17
  this.storage = storage;
21
18
  this.logger = logger;
22
- this.commandProcessor = new commandActionProcessor_1.CommandActionProcessor(botName, storage, scheduler, logger);
23
- this.scheduledProcessor = new scheduledActionProcessor_1.ScheduledActionProcessor(botName, chats, storage, scheduler, logger);
24
- this.inlineQueryProcessor = new inlineQueryActionProcessor_1.InlineQueryActionProcessor(botName, storage, scheduler, logger);
19
+ this.commandProcessor = new CommandActionProcessor(botName, storage, scheduler, logger);
20
+ this.scheduledProcessor = new ScheduledActionProcessor(botName, chats, storage, scheduler, logger);
21
+ this.inlineQueryProcessor = new InlineQueryActionProcessor(botName, storage, scheduler, logger);
25
22
  this.botName = botName;
26
23
  }
27
24
  async initialize(token, actions, scheduledPeriod, verboseLoggingForIncomingMessage) {
28
- this.telegramBot = new telegraf_1.Telegraf(token);
29
- const api = new telegramApi_1.TelegramApiService(this.botName, this.telegramBot.telegram, this.storage, this.logger, (capture, id, chatInfo, traceId) => {
25
+ this.telegramBot = new Telegraf(token);
26
+ const api = new TelegramApiService(this.botName, this.telegramBot.telegram, this.storage, this.logger, (capture, id, chatInfo, traceId) => {
30
27
  this.commandProcessor.captureRegistrationCallback(capture, id, chatInfo, traceId);
31
28
  });
32
29
  const botInfo = await this.telegramBot.telegram.getMe();
33
30
  const commandActions = actions.commands.length > 0 && botInfo.username
34
31
  ? [
35
- (0, helpAction_1.buildHelpCommand)(actions.commands
32
+ buildHelpCommand(actions.commands
36
33
  .map((x) => x.readmeFactory(botInfo.username))
37
34
  .filter((x) => !!x), botInfo.username),
38
35
  ...actions.commands
@@ -40,7 +37,7 @@ class ActionProcessingService {
40
37
  : [];
41
38
  this.commandProcessor.initialize(api, this.telegramBot, commandActions, verboseLoggingForIncomingMessage ?? false, botInfo);
42
39
  this.inlineQueryProcessor.initialize(api, this.telegramBot, actions.inlineQueries, 300);
43
- this.scheduledProcessor.initialize(api, actions.scheduled, scheduledPeriod ?? (0, timeConvertions_1.hoursToSeconds)(1));
40
+ this.scheduledProcessor.initialize(api, actions.scheduled, scheduledPeriod ?? hoursToSeconds(1));
44
41
  void this.telegramBot.launch();
45
42
  void this.storage.saveMetadata([
46
43
  ...actions.scheduled,
@@ -51,4 +48,3 @@ class ActionProcessingService {
51
48
  this.telegramBot.stop();
52
49
  }
53
50
  }
54
- exports.ActionProcessingService = ActionProcessingService;
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseActionProcessor = void 0;
4
- class BaseActionProcessor {
1
+ export class BaseActionProcessor {
5
2
  storage;
6
3
  scheduler;
7
4
  logger;
@@ -30,4 +27,3 @@ class BaseActionProcessor {
30
27
  }
31
28
  }
32
29
  }
33
- exports.BaseActionProcessor = BaseActionProcessor;
@@ -1 +1 @@
1
- {"version":3,"file":"commandActionProcessor.d.ts","sourceRoot":"","sources":["../../../services/actionProcessors/commandActionProcessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAIrE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAM/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAKtD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAInE,qBAAa,sBAAuB,SAAQ,mBAAmB;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0C;IACxE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2C;IACvE,OAAO,CAAC,OAAO,CAAW;IAE1B,OAAO,CAAC,QAAQ,CAKd;IAEF,UAAU,CACN,GAAG,EAAE,kBAAkB,EACvB,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,EACvC,gCAAgC,EAAE,OAAO,EACzC,OAAO,EAAE,OAAO;IA2DpB,2BAA2B,CACvB,OAAO,EAAE,aAAa,EACtB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO;YAgCN,cAAc;IAoD5B,OAAO,CAAC,6BAA6B;IAiCrC,OAAO,CAAC,wBAAwB;CAmCnC"}
1
+ {"version":3,"file":"commandActionProcessor.d.ts","sourceRoot":"","sources":["../../../services/actionProcessors/commandActionProcessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAIrE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAM/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAKtD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAInE,qBAAa,sBAAuB,SAAQ,mBAAmB;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0C;IACxE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2C;IACvE,OAAO,CAAC,OAAO,CAAW;IAE1B,OAAO,CAAC,QAAQ,CAKd;IAEF,UAAU,CACN,GAAG,EAAE,kBAAkB,EACvB,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,EACvC,gCAAgC,EAAE,OAAO,EACzC,OAAO,EAAE,OAAO;IA0DpB,2BAA2B,CACvB,OAAO,EAAE,aAAa,EACtB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO;YAgCN,cAAc;IAoD5B,OAAO,CAAC,6BAA6B;IAiCrC,OAAO,CAAC,wBAAwB;CAmCnC"}
@@ -1,45 +1,41 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CommandActionProcessor = void 0;
4
- const incomingMessage_1 = require("../../dtos/incomingMessage");
5
- const replyCaptureAction_1 = require("../../entities/actions/replyCaptureAction");
6
- const messageContext_1 = require("../../entities/context/messageContext");
7
- const replyContext_1 = require("../../entities/context/replyContext");
8
- const messageTypes_1 = require("../../types/messageTypes");
9
- const objectFromEntries_1 = require("../../helpers/objectFromEntries");
10
- const baseProcessor_1 = require("./baseProcessor");
11
- const mapUtils_1 = require("../../helpers/mapUtils");
12
- const messageInfo_1 = require("../../dtos/messageInfo");
13
- const userInfo_1 = require("../../dtos/userInfo");
14
- const chatHistoryMessage_1 = require("../../dtos/chatHistoryMessage");
1
+ import { IncomingMessage } from '../../dtos/incomingMessage';
2
+ import { ReplyCaptureAction } from '../../entities/actions/replyCaptureAction';
3
+ import { MessageContextInternal } from '../../entities/context/messageContext';
4
+ import { ReplyContextInternal } from '../../entities/context/replyContext';
5
+ import { INTERNAL_MESSAGE_TYPE_PREFIX, MessageType } from '../../types/messageTypes';
6
+ import { typeSafeObjectFromEntries } from '../../helpers/objectFromEntries';
7
+ import { BaseActionProcessor } from './baseProcessor';
8
+ import { getOrSetIfNotExists } from '../../helpers/mapUtils';
9
+ import { MessageInfo } from '../../dtos/messageInfo';
10
+ import { UserInfo } from '../../dtos/userInfo';
11
+ import { ChatHistoryMessage } from '../../dtos/chatHistoryMessage';
15
12
  const MESSAGE_HISTORY_LENGTH_LIMIT = 100;
16
- class CommandActionProcessor extends baseProcessor_1.BaseActionProcessor {
13
+ export class CommandActionProcessor extends BaseActionProcessor {
17
14
  replyCaptures = [];
18
15
  chatHistory = new Map();
19
16
  botInfo;
20
- commands = (0, objectFromEntries_1.typeSafeObjectFromEntries)(Object.values(messageTypes_1.MessageType).map((x) => [
17
+ commands = typeSafeObjectFromEntries(Object.values(MessageType).map((x) => [
21
18
  x,
22
19
  []
23
20
  ]));
24
21
  initialize(api, telegram, commands, verboseLoggingForIncomingMessage, botInfo) {
25
22
  this.botInfo = botInfo;
26
23
  this.initializeDependencies(api);
27
- for (const msgType of Object.values(messageTypes_1.MessageType)) {
28
- if (msgType == messageTypes_1.MessageType.Text) {
29
- this.commands[msgType] = commands.filter((cmd) => cmd.triggers.find((x) => typeof x != 'string') !=
30
- undefined ||
31
- cmd.triggers.find((x) => typeof x == 'string' &&
32
- !x.startsWith(messageTypes_1.INTERNAL_MESSAGE_TYPE_PREFIX)) ||
33
- cmd.triggers.includes(messageTypes_1.MessageType.Text) ||
34
- cmd.triggers.includes(messageTypes_1.MessageType.Any));
24
+ for (const msgType of Object.values(MessageType)) {
25
+ if (msgType == MessageType.Text) {
26
+ this.commands[msgType] = commands.filter((cmd) => cmd.triggers.some((x) => typeof x != 'string') ||
27
+ cmd.triggers.some((x) => typeof x == 'string' &&
28
+ !x.startsWith(INTERNAL_MESSAGE_TYPE_PREFIX)) ||
29
+ cmd.triggers.includes(MessageType.Text) ||
30
+ cmd.triggers.includes(MessageType.Any));
35
31
  continue;
36
32
  }
37
33
  this.commands[msgType] = commands.filter((cmd) => cmd.triggers.includes(msgType) ||
38
- cmd.triggers.includes(messageTypes_1.MessageType.Any));
34
+ cmd.triggers.includes(MessageType.Any));
39
35
  }
40
36
  if (commands.length > 0) {
41
37
  telegram.on('message', ({ message }) => {
42
- const internalMessage = new incomingMessage_1.IncomingMessage(message, this.botName, (0, mapUtils_1.getOrSetIfNotExists)(this.chatHistory, message.chat.id, []));
38
+ const internalMessage = new IncomingMessage(message, this.botName, getOrSetIfNotExists(this.chatHistory, message.chat.id, []));
43
39
  const logger = this.logger.createScope(this.botName, internalMessage.traceId, internalMessage.chatInfo.name);
44
40
  if (verboseLoggingForIncomingMessage) {
45
41
  logger.logObjectWithTraceId(message);
@@ -52,7 +48,7 @@ class CommandActionProcessor extends baseProcessor_1.BaseActionProcessor {
52
48
  }
53
49
  }
54
50
  captureRegistrationCallback(capture, parentMessageId, chatInfo, traceId) {
55
- const replyAction = new replyCaptureAction_1.ReplyCaptureAction(parentMessageId, capture.action, capture.handler, capture.trigger, capture.abortController);
51
+ const replyAction = new ReplyCaptureAction(parentMessageId, capture.action, capture.handler, capture.trigger, capture.abortController);
56
52
  const logger = this.logger.createScope(this.botName, traceId, chatInfo.name);
57
53
  logger.logWithTraceId(`Starting capturing replies to message ${parentMessageId} with action ${replyAction.key}`);
58
54
  this.replyCaptures.push(replyAction);
@@ -63,21 +59,23 @@ class CommandActionProcessor extends baseProcessor_1.BaseActionProcessor {
63
59
  });
64
60
  }
65
61
  async processMessage(msg) {
66
- const chatHistoryArray = (0, mapUtils_1.getOrSetIfNotExists)(this.chatHistory, msg.chatInfo.id, []);
62
+ const chatHistoryArray = getOrSetIfNotExists(this.chatHistory, msg.chatInfo.id, []);
67
63
  while (chatHistoryArray.length > MESSAGE_HISTORY_LENGTH_LIMIT)
68
64
  chatHistoryArray.shift();
69
- chatHistoryArray.push(new chatHistoryMessage_1.ChatHistoryMessage(msg.messageId, msg.from, msg.text, msg.type, msg.traceId, msg.replyToMessageId));
70
- const ctx = new messageContext_1.MessageContextInternal(this.storage, this.scheduler);
65
+ chatHistoryArray.push(new ChatHistoryMessage(msg.messageId, msg.from, msg.text, msg.type, msg.traceId, msg.replyToMessageId));
66
+ const ctx = new MessageContextInternal(this.storage, this.scheduler);
71
67
  const commandsToCheck = new Set(this.commands[msg.type]);
72
- if (msg.type != messageTypes_1.MessageType.Text && msg.text != '') {
73
- this.commands[messageTypes_1.MessageType.Text].forEach((x) => commandsToCheck.add(x));
68
+ if (msg.type != MessageType.Text && msg.text != '') {
69
+ for (const command of this.commands[MessageType.Text]) {
70
+ commandsToCheck.add(command);
71
+ }
74
72
  }
75
73
  for (const commandAction of commandsToCheck) {
76
74
  this.initializeMessageContext(ctx, commandAction, msg);
77
75
  await this.executeAction(commandAction, ctx);
78
76
  }
79
77
  if (this.replyCaptures.length != 0) {
80
- const replyCtx = new replyContext_1.ReplyContextInternal(this.storage, this.scheduler);
78
+ const replyCtx = new ReplyContextInternal(this.storage, this.scheduler);
81
79
  for (const replyAction of this.replyCaptures) {
82
80
  this.initializeReplyCaptureContext(replyCtx, replyAction, msg);
83
81
  await this.executeAction(replyAction, replyCtx);
@@ -87,8 +85,8 @@ class CommandActionProcessor extends baseProcessor_1.BaseActionProcessor {
87
85
  }
88
86
  initializeReplyCaptureContext(ctx, action, message) {
89
87
  ctx.replyMessageId = message.replyToMessageId;
90
- ctx.messageInfo = new messageInfo_1.MessageInfo(message.messageId, message.text, message.type, message.updateObject);
91
- ctx.userInfo = new userInfo_1.UserInfo(message.from?.id ?? -1, (message.from?.first_name ?? 'Unknown user') +
88
+ ctx.messageInfo = new MessageInfo(message.messageId, message.text, message.type, message.updateObject);
89
+ ctx.userInfo = new UserInfo(message.from?.id ?? -1, (message.from?.first_name ?? 'Unknown user') +
92
90
  (message.from?.last_name ? ` ${message.from.last_name}` : ''));
93
91
  ctx.botName = this.botName;
94
92
  ctx.action = action;
@@ -100,8 +98,8 @@ class CommandActionProcessor extends baseProcessor_1.BaseActionProcessor {
100
98
  ctx.logger = this.logger.createScope(this.botName, message.traceId, message.chatInfo.name);
101
99
  }
102
100
  initializeMessageContext(ctx, action, message) {
103
- ctx.messageInfo = new messageInfo_1.MessageInfo(message.messageId, message.text, message.type, message.updateObject);
104
- ctx.userInfo = new userInfo_1.UserInfo(message.from?.id ?? -1, (message.from?.first_name ?? 'Unknown user') +
101
+ ctx.messageInfo = new MessageInfo(message.messageId, message.text, message.type, message.updateObject);
102
+ ctx.userInfo = new UserInfo(message.from?.id ?? -1, (message.from?.first_name ?? 'Unknown user') +
105
103
  (message.from?.last_name ? ` ${message.from.last_name}` : ''));
106
104
  ctx.matchResults = [];
107
105
  ctx.startCooldown = true;
@@ -116,4 +114,3 @@ class CommandActionProcessor extends baseProcessor_1.BaseActionProcessor {
116
114
  ctx.logger = this.logger.createScope(this.botName, message.traceId, message.chatInfo.name);
117
115
  }
118
116
  }
119
- exports.CommandActionProcessor = CommandActionProcessor;
@@ -1,11 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InlineQueryActionProcessor = void 0;
4
- const incomingQuery_1 = require("../../dtos/incomingQuery");
5
- const inlineQueryContext_1 = require("../../entities/context/inlineQueryContext");
6
- const traceFactory_1 = require("../../helpers/traceFactory");
7
- const baseProcessor_1 = require("./baseProcessor");
8
- class InlineQueryActionProcessor extends baseProcessor_1.BaseActionProcessor {
1
+ import { IncomingInlineQuery } from '../../dtos/incomingQuery';
2
+ import { InlineQueryContextInternal } from '../../entities/context/inlineQueryContext';
3
+ import { createTrace } from '../../helpers/traceFactory';
4
+ import { BaseActionProcessor } from './baseProcessor';
5
+ export class InlineQueryActionProcessor extends BaseActionProcessor {
9
6
  inlineQueries;
10
7
  initialize(api, telegram, inlineQueries, period) {
11
8
  this.initializeDependencies(api);
@@ -14,7 +11,7 @@ class InlineQueryActionProcessor extends baseProcessor_1.BaseActionProcessor {
14
11
  const queriesInProcessing = new Map();
15
12
  if (this.inlineQueries.length > 0) {
16
13
  telegram.on('inline_query', ({ inlineQuery }) => {
17
- const query = new incomingQuery_1.IncomingInlineQuery(inlineQuery.id, inlineQuery.query, inlineQuery.from.id, (0, traceFactory_1.createTrace)('InlineQuery', this.botName, inlineQuery.id));
14
+ const query = new IncomingInlineQuery(inlineQuery.id, inlineQuery.query, inlineQuery.from.id, createTrace('InlineQuery', this.botName, inlineQuery.id));
18
15
  const logger = this.logger.createScope(this.botName, query.traceId, 'Query');
19
16
  logger.logWithTraceId(`${inlineQuery.from.username ?? 'Unknown'} (${inlineQuery.from.id}): Query for ${inlineQuery.query}`);
20
17
  const queryBeingProcessed = queriesInProcessing.get(query.userId);
@@ -27,7 +24,7 @@ class InlineQueryActionProcessor extends baseProcessor_1.BaseActionProcessor {
27
24
  pendingInlineQueries.push(query);
28
25
  });
29
26
  this.scheduler.createTask('InlineQueryProcessing', async () => {
30
- const ctx = new inlineQueryContext_1.InlineQueryContextInternal(this.storage, this.scheduler);
27
+ const ctx = new InlineQueryContextInternal(this.storage, this.scheduler);
31
28
  const queriesToProcess = [...pendingInlineQueries];
32
29
  pendingInlineQueries = [];
33
30
  for (const inlineQuery of queriesToProcess) {
@@ -62,4 +59,3 @@ class InlineQueryActionProcessor extends baseProcessor_1.BaseActionProcessor {
62
59
  ctx.logger = this.logger.createScope(this.botName, traceId, 'Unknown');
63
60
  }
64
61
  }
65
- exports.InlineQueryActionProcessor = InlineQueryActionProcessor;
@@ -1,16 +1,10 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ScheduledActionProcessor = void 0;
7
- const moment_1 = __importDefault(require("moment"));
8
- const chatInfo_1 = require("../../dtos/chatInfo");
9
- const chatContext_1 = require("../../entities/context/chatContext");
10
- const timeConvertions_1 = require("../../helpers/timeConvertions");
11
- const traceFactory_1 = require("../../helpers/traceFactory");
12
- const baseProcessor_1 = require("./baseProcessor");
13
- class ScheduledActionProcessor extends baseProcessor_1.BaseActionProcessor {
1
+ import moment from 'moment';
2
+ import { ChatInfo } from '../../dtos/chatInfo';
3
+ import { ChatContextInternal } from '../../entities/context/chatContext';
4
+ import { secondsToMilliseconds } from '../../helpers/timeConvertions';
5
+ import { createTrace } from '../../helpers/traceFactory';
6
+ import { BaseActionProcessor } from './baseProcessor';
7
+ export class ScheduledActionProcessor extends BaseActionProcessor {
14
8
  chats;
15
9
  scheduled;
16
10
  constructor(botName, chats, storage, scheduler, logger) {
@@ -21,11 +15,11 @@ class ScheduledActionProcessor extends baseProcessor_1.BaseActionProcessor {
21
15
  this.initializeDependencies(api);
22
16
  this.scheduled = scheduled;
23
17
  if (this.scheduled.length > 0) {
24
- const now = (0, moment_1.default)();
18
+ const now = moment();
25
19
  if (now.minute() == 0 && now.second() == 0) {
26
20
  this.scheduler.createTask('ScheduledProcessing', async () => {
27
21
  await this.runScheduled();
28
- }, (0, timeConvertions_1.secondsToMilliseconds)(period), true, this.botName);
22
+ }, secondsToMilliseconds(period), true, this.botName);
29
23
  return;
30
24
  }
31
25
  let nextExecutionTime = now.clone().startOf('hour');
@@ -36,15 +30,15 @@ class ScheduledActionProcessor extends baseProcessor_1.BaseActionProcessor {
36
30
  this.scheduler.createOnetimeTask('ScheduledProcessing_OneTime', () => {
37
31
  this.scheduler.createTask('ScheduledProcessing', () => {
38
32
  void this.runScheduled();
39
- }, (0, timeConvertions_1.secondsToMilliseconds)(period), true, this.botName);
33
+ }, secondsToMilliseconds(period), true, this.botName);
40
34
  }, delay, this.botName);
41
35
  }
42
36
  }
43
37
  async runScheduled() {
44
- const ctx = new chatContext_1.ChatContextInternal(this.storage, this.scheduler);
38
+ const ctx = new ChatContextInternal(this.storage, this.scheduler);
45
39
  for (const [chatName, chatId] of Object.entries(this.chats)) {
46
40
  for (const scheduledAction of this.scheduled) {
47
- this.initializeChatContext(ctx, scheduledAction, new chatInfo_1.ChatInfo(chatId, chatName, []), (0, traceFactory_1.createTrace)(scheduledAction, this.botName, `${scheduledAction.key}-${chatId}`));
41
+ this.initializeChatContext(ctx, scheduledAction, new ChatInfo(chatId, chatName, []), createTrace(scheduledAction, this.botName, `${scheduledAction.key}-${chatId}`));
48
42
  await this.executeAction(scheduledAction, ctx);
49
43
  }
50
44
  }
@@ -60,4 +54,3 @@ class ScheduledActionProcessor extends baseProcessor_1.BaseActionProcessor {
60
54
  ctx.logger = this.logger.createScope(this.botName, traceId, chatInfo.name);
61
55
  }
62
56
  }
63
- exports.ScheduledActionProcessor = ScheduledActionProcessor;