chz-telegram-bot 0.0.44 → 0.0.45

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 (131) hide show
  1. package/entities/incomingMessage.ts +1 -0
  2. package/package.json +29 -29
  3. package/dist/entities/actionExecutionResult.d.ts +0 -7
  4. package/dist/entities/actionExecutionResult.d.ts.map +0 -1
  5. package/dist/entities/actionExecutionResult.js +0 -10
  6. package/dist/entities/actions/commandAction.d.ts +0 -23
  7. package/dist/entities/actions/commandAction.d.ts.map +0 -1
  8. package/dist/entities/actions/commandAction.js +0 -91
  9. package/dist/entities/actions/scheduledAction.d.ts +0 -24
  10. package/dist/entities/actions/scheduledAction.d.ts.map +0 -1
  11. package/dist/entities/actions/scheduledAction.js +0 -81
  12. package/dist/entities/botInstance.d.ts +0 -31
  13. package/dist/entities/botInstance.d.ts.map +0 -1
  14. package/dist/entities/botInstance.js +0 -107
  15. package/dist/entities/cachedStateFactory.d.ts +0 -7
  16. package/dist/entities/cachedStateFactory.d.ts.map +0 -1
  17. package/dist/entities/cachedStateFactory.js +0 -10
  18. package/dist/entities/commandTriggerCheckResult.d.ts +0 -10
  19. package/dist/entities/commandTriggerCheckResult.d.ts.map +0 -1
  20. package/dist/entities/commandTriggerCheckResult.js +0 -23
  21. package/dist/entities/context/chatContext.d.ts +0 -54
  22. package/dist/entities/context/chatContext.d.ts.map +0 -1
  23. package/dist/entities/context/chatContext.js +0 -70
  24. package/dist/entities/context/messageContext.d.ts +0 -60
  25. package/dist/entities/context/messageContext.d.ts.map +0 -1
  26. package/dist/entities/context/messageContext.js +0 -82
  27. package/dist/entities/incomingMessage.d.ts +0 -14
  28. package/dist/entities/incomingMessage.d.ts.map +0 -1
  29. package/dist/entities/incomingMessage.js +0 -43
  30. package/dist/entities/responses/imageMessage.d.ts +0 -16
  31. package/dist/entities/responses/imageMessage.d.ts.map +0 -1
  32. package/dist/entities/responses/imageMessage.js +0 -17
  33. package/dist/entities/responses/reaction.d.ts +0 -13
  34. package/dist/entities/responses/reaction.d.ts.map +0 -1
  35. package/dist/entities/responses/reaction.js +0 -15
  36. package/dist/entities/responses/textMessage.d.ts +0 -15
  37. package/dist/entities/responses/textMessage.d.ts.map +0 -1
  38. package/dist/entities/responses/textMessage.js +0 -17
  39. package/dist/entities/responses/unpin.d.ts +0 -11
  40. package/dist/entities/responses/unpin.d.ts.map +0 -1
  41. package/dist/entities/responses/unpin.js +0 -14
  42. package/dist/entities/responses/videoMessage.d.ts +0 -16
  43. package/dist/entities/responses/videoMessage.d.ts.map +0 -1
  44. package/dist/entities/responses/videoMessage.js +0 -17
  45. package/dist/entities/states/actionStateBase.d.ts +0 -6
  46. package/dist/entities/states/actionStateBase.d.ts.map +0 -1
  47. package/dist/entities/states/actionStateBase.js +0 -10
  48. package/dist/entities/taskRecord.d.ts +0 -8
  49. package/dist/entities/taskRecord.d.ts.map +0 -1
  50. package/dist/entities/taskRecord.js +0 -11
  51. package/dist/helpers/builders/commandActionBuilder.d.ts +0 -69
  52. package/dist/helpers/builders/commandActionBuilder.d.ts.map +0 -1
  53. package/dist/helpers/builders/commandActionBuilder.js +0 -96
  54. package/dist/helpers/builders/scheduledActionBuilder.d.ts +0 -60
  55. package/dist/helpers/builders/scheduledActionBuilder.d.ts.map +0 -1
  56. package/dist/helpers/builders/scheduledActionBuilder.js +0 -82
  57. package/dist/helpers/inverseRecord.d.ts +0 -2
  58. package/dist/helpers/inverseRecord.d.ts.map +0 -1
  59. package/dist/helpers/inverseRecord.js +0 -6
  60. package/dist/helpers/noop.d.ts +0 -6
  61. package/dist/helpers/noop.d.ts.map +0 -1
  62. package/dist/helpers/noop.js +0 -14
  63. package/dist/helpers/reverseMap.d.ts +0 -2
  64. package/dist/helpers/reverseMap.d.ts.map +0 -1
  65. package/dist/helpers/reverseMap.js +0 -6
  66. package/dist/helpers/reverseRecord.d.ts +0 -2
  67. package/dist/helpers/reverseRecord.d.ts.map +0 -1
  68. package/dist/helpers/reverseRecord.js +0 -6
  69. package/dist/helpers/timeConvertions.d.ts +0 -5
  70. package/dist/helpers/timeConvertions.d.ts.map +0 -1
  71. package/dist/helpers/timeConvertions.js +0 -14
  72. package/dist/helpers/toArray.d.ts +0 -2
  73. package/dist/helpers/toArray.d.ts.map +0 -1
  74. package/dist/helpers/toArray.js +0 -6
  75. package/dist/index.d.ts +0 -10
  76. package/dist/index.d.ts.map +0 -1
  77. package/dist/index.js +0 -29
  78. package/dist/main.d.ts +0 -35
  79. package/dist/main.d.ts.map +0 -1
  80. package/dist/main.js +0 -43
  81. package/dist/services/jsonFileStorage.d.ts +0 -22
  82. package/dist/services/jsonFileStorage.d.ts.map +0 -1
  83. package/dist/services/jsonFileStorage.js +0 -102
  84. package/dist/services/logger.d.ts +0 -9
  85. package/dist/services/logger.d.ts.map +0 -1
  86. package/dist/services/logger.js +0 -28
  87. package/dist/services/taskScheduler.d.ts +0 -11
  88. package/dist/services/taskScheduler.d.ts.map +0 -1
  89. package/dist/services/taskScheduler.js +0 -33
  90. package/dist/services/telegramApi.d.ts +0 -36
  91. package/dist/services/telegramApi.d.ts.map +0 -1
  92. package/dist/services/telegramApi.js +0 -100
  93. package/dist/types/actionState.d.ts +0 -5
  94. package/dist/types/actionState.d.ts.map +0 -1
  95. package/dist/types/actionState.js +0 -2
  96. package/dist/types/actionWithState.d.ts +0 -9
  97. package/dist/types/actionWithState.d.ts.map +0 -1
  98. package/dist/types/actionWithState.js +0 -2
  99. package/dist/types/cachedValueAccessor.d.ts +0 -2
  100. package/dist/types/cachedValueAccessor.d.ts.map +0 -1
  101. package/dist/types/cachedValueAccessor.js +0 -2
  102. package/dist/types/commandCondition.d.ts +0 -4
  103. package/dist/types/commandCondition.d.ts.map +0 -1
  104. package/dist/types/commandCondition.js +0 -2
  105. package/dist/types/commandTrigger.d.ts +0 -3
  106. package/dist/types/commandTrigger.d.ts.map +0 -1
  107. package/dist/types/commandTrigger.js +0 -2
  108. package/dist/types/daysOfTheWeek.d.ts +0 -10
  109. package/dist/types/daysOfTheWeek.d.ts.map +0 -1
  110. package/dist/types/daysOfTheWeek.js +0 -13
  111. package/dist/types/handlers.d.ts +0 -17
  112. package/dist/types/handlers.d.ts.map +0 -1
  113. package/dist/types/handlers.js +0 -2
  114. package/dist/types/messageSendingOptions.d.ts +0 -7
  115. package/dist/types/messageSendingOptions.d.ts.map +0 -1
  116. package/dist/types/messageSendingOptions.js +0 -2
  117. package/dist/types/messageTypes.d.ts +0 -16
  118. package/dist/types/messageTypes.d.ts.map +0 -1
  119. package/dist/types/messageTypes.js +0 -17
  120. package/dist/types/replyMessage.d.ts +0 -8
  121. package/dist/types/replyMessage.d.ts.map +0 -1
  122. package/dist/types/replyMessage.js +0 -2
  123. package/dist/types/response.d.ts +0 -27
  124. package/dist/types/response.d.ts.map +0 -1
  125. package/dist/types/response.js +0 -10
  126. package/dist/types/storage.d.ts +0 -12
  127. package/dist/types/storage.d.ts.map +0 -1
  128. package/dist/types/storage.js +0 -2
  129. package/dist/types/timeValues.d.ts +0 -11
  130. package/dist/types/timeValues.d.ts.map +0 -1
  131. package/dist/types/timeValues.js +0 -2
@@ -1,96 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CommandActionBuilder = exports.CommandActionBuilderWithState = void 0;
4
- const commandAction_1 = require("../../entities/actions/commandAction");
5
- const actionStateBase_1 = require("../../entities/states/actionStateBase");
6
- const toArray_1 = require("../toArray");
7
- const noop_1 = require("../noop");
8
- /**
9
- * Builder for `CommandAction` with state represented by `TActionState`
10
- */
11
- class CommandActionBuilderWithState {
12
- /**
13
- * Builder for `CommandAction` with state represented by `TActionState`
14
- * @param name Action name, will be used for logging and storage
15
- * @param stateConstructor Function that creates default state object
16
- */
17
- constructor(name, stateConstructor) {
18
- this.trigger = [];
19
- this.active = true;
20
- this.cooldownSeconds = 0;
21
- this.blacklist = [];
22
- this.allowedUsers = [];
23
- this.handler = noop_1.Noop.call;
24
- this.condition = noop_1.Noop.true;
25
- this.name = name;
26
- this.stateConstructor = stateConstructor;
27
- }
28
- /**
29
- * Defines action trigger
30
- * @param trigger If `string` or `string[]` is provided, will be triggered only on exact message match.
31
- *
32
- * If `RegExp` or `RegExp[]` is provided, will be triggered on successful match.
33
- */
34
- on(trigger) {
35
- this.trigger = trigger;
36
- return this;
37
- }
38
- /** Defines id (or ids) of users that are allowed to trigger this action.
39
- * @param id User id or ids
40
- */
41
- from(id) {
42
- this.allowedUsers = (0, toArray_1.toArray)(id);
43
- return this;
44
- }
45
- /** Defines action logic itself, will be executed on trigger.
46
- * @param handler Callback that will be called on trigger
47
- */
48
- do(handler) {
49
- this.handler = handler;
50
- return this;
51
- }
52
- /** Defines condition that will be checked before trigger match check is executed.
53
- * @param condition Condition check predicate
54
- */
55
- when(condition) {
56
- this.condition = condition;
57
- return this;
58
- }
59
- /** If called during building, action is marked as disabled and never checked. */
60
- disabled() {
61
- this.active = false;
62
- return this;
63
- }
64
- /** Sets action cooldown.
65
- * @param seconds Cooldown in seconds.
66
- */
67
- cooldown(seconds) {
68
- this.cooldownSeconds = seconds;
69
- return this;
70
- }
71
- /**
72
- * Adds a chat to ignore list for this action.
73
- * @param chatId Chat id to ignore.
74
- */
75
- ignoreChat(chatId) {
76
- this.blacklist.push(chatId);
77
- return this;
78
- }
79
- /** Builds action */
80
- build() {
81
- return new commandAction_1.CommandAction(this.trigger, this.handler, this.name, this.active, this.cooldownSeconds, this.blacklist, this.allowedUsers, this.condition, this.stateConstructor);
82
- }
83
- }
84
- exports.CommandActionBuilderWithState = CommandActionBuilderWithState;
85
- /**
86
- * Builder for `CommandAction` with state represented by default state (containing only last execution date).
87
- */
88
- class CommandActionBuilder extends CommandActionBuilderWithState {
89
- /**
90
- * Builder for `CommandAction` with state represented by default state (containing only last execution date).
91
- */
92
- constructor(name) {
93
- super(name, () => new actionStateBase_1.ActionStateBase());
94
- }
95
- }
96
- exports.CommandActionBuilder = CommandActionBuilder;
@@ -1,60 +0,0 @@
1
- import { ScheduledAction } from '../../entities/actions/scheduledAction';
2
- import { CachedStateFactory } from '../../entities/cachedStateFactory';
3
- import { ActionStateBase } from '../../entities/states/actionStateBase';
4
- import { IActionState } from '../../types/actionState';
5
- import { ScheduledHandler } from '../../types/handlers';
6
- import { Hours, HoursOfDay } from '../../types/timeValues';
7
- /**
8
- * Builder for `ScheduledAction` with state represented by `TActionState`
9
- */
10
- export declare class ScheduledActionBuilderWithState<TActionState extends IActionState> {
11
- active: boolean;
12
- time: HoursOfDay;
13
- cachedStateFactories: Map<string, CachedStateFactory>;
14
- whitelist: number[];
15
- stateConstructor: () => TActionState;
16
- handler: ScheduledHandler<TActionState>;
17
- name: string;
18
- /**
19
- * Builder for `ScheduledAction` with state represented by `TActionState`
20
- * @param name Action name, will be used for logging and storage
21
- * @param stateConstructor Function that creates default state object
22
- */
23
- constructor(name: string, stateConstructor: () => TActionState);
24
- /**
25
- * Adds a chat to whitelist for this action.
26
- * @param chatId Chat id to execute in.
27
- */
28
- allowIn(chatId: number): this;
29
- /**
30
- * Defines time for scheduled item execution.
31
- * @param time Time of day (0 - 23) to execute action.
32
- */
33
- runAt(time: HoursOfDay): this;
34
- /** Defines action logic itself, will be executed on timer.
35
- * @param handler Callback that will be called on timer.
36
- */
37
- do(handler: ScheduledHandler<TActionState>): this;
38
- /**
39
- * Defines process-wide cache, that is shared by all actions of this type (even in different bot instances).
40
- * Can be used for fetch request de-duping, etc.
41
- * @param key Key that will be used to retrieve value from cache.
42
- * @param itemFactory Callback that will be executed once to create cached value.
43
- * @param invalidationTimeoutInHours Timeout for cache invalidation.
44
- */
45
- withSharedCache(key: string, itemFactory: () => Promise<unknown>, invalidationTimeoutInHours?: Hours): this;
46
- /** If called during building, action is marked as disabled and never checked. */
47
- disabled(): this;
48
- /** Builds action */
49
- build(): ScheduledAction<TActionState>;
50
- }
51
- /**
52
- * Builder for `ScheduledAction` with state represented by default state (containing only last execution date).
53
- */
54
- export declare class ScheduledActionBuilder extends ScheduledActionBuilderWithState<ActionStateBase> {
55
- /**
56
- * Builder for `ScheduledAction` with state represented by default state (containing only last execution date).
57
- */
58
- constructor(name: string);
59
- }
60
- //# sourceMappingURL=scheduledActionBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduledActionBuilder.d.ts","sourceRoot":"","sources":["../../../helpers/builders/scheduledActionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAG3D;;GAEG;AACH,qBAAa,+BAA+B,CACxC,YAAY,SAAS,YAAY;IAEjC,MAAM,UAAQ;IACd,IAAI,EAAE,UAAU,CAAK;IACrB,oBAAoB,kCAAyC;IAC7D,SAAS,EAAE,MAAM,EAAE,CAAM;IACzB,gBAAgB,EAAE,MAAM,YAAY,CAAC;IACrC,OAAO,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAa;IAEpD,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;gBACS,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,YAAY;IAK9D;;;OAGG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM;IAMtB;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,UAAU;IAMtB;;OAEG;IACH,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,YAAY,CAAC;IAM1C;;;;;;OAMG;IACH,eAAe,CACX,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EACnC,0BAA0B,GAAE,KAAmB;IAUnD,iFAAiF;IACjF,QAAQ;IAMR,oBAAoB;IACpB,KAAK;CAWR;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,+BAA+B,CAAC,eAAe,CAAC;IACxF;;OAEG;gBACS,IAAI,EAAE,MAAM;CAG3B"}
@@ -1,82 +0,0 @@
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");
8
- /**
9
- * Builder for `ScheduledAction` with state represented by `TActionState`
10
- */
11
- class ScheduledActionBuilderWithState {
12
- /**
13
- * Builder for `ScheduledAction` with state represented by `TActionState`
14
- * @param name Action name, will be used for logging and storage
15
- * @param stateConstructor Function that creates default state object
16
- */
17
- constructor(name, stateConstructor) {
18
- this.active = true;
19
- this.time = 0;
20
- this.cachedStateFactories = new Map();
21
- this.whitelist = [];
22
- this.handler = noop_1.Noop.call;
23
- this.name = name;
24
- this.stateConstructor = stateConstructor;
25
- }
26
- /**
27
- * Adds a chat to whitelist for this action.
28
- * @param chatId Chat id to execute in.
29
- */
30
- allowIn(chatId) {
31
- this.whitelist.push(chatId);
32
- return this;
33
- }
34
- /**
35
- * Defines time for scheduled item execution.
36
- * @param time Time of day (0 - 23) to execute action.
37
- */
38
- runAt(time) {
39
- this.time = time;
40
- return this;
41
- }
42
- /** Defines action logic itself, will be executed on timer.
43
- * @param handler Callback that will be called on timer.
44
- */
45
- do(handler) {
46
- this.handler = handler;
47
- return this;
48
- }
49
- /**
50
- * Defines process-wide cache, that is shared by all actions of this type (even in different bot instances).
51
- * Can be used for fetch request de-duping, etc.
52
- * @param key Key that will be used to retrieve value from cache.
53
- * @param itemFactory Callback that will be executed once to create cached value.
54
- * @param invalidationTimeoutInHours Timeout for cache invalidation.
55
- */
56
- withSharedCache(key, itemFactory, invalidationTimeoutInHours = 20) {
57
- this.cachedStateFactories.set(key, new cachedStateFactory_1.CachedStateFactory(itemFactory, invalidationTimeoutInHours));
58
- return this;
59
- }
60
- /** If called during building, action is marked as disabled and never checked. */
61
- disabled() {
62
- this.active = false;
63
- return this;
64
- }
65
- /** Builds action */
66
- build() {
67
- return new scheduledAction_1.ScheduledAction(this.name, this.handler, this.time, this.active, this.whitelist, this.cachedStateFactories, this.stateConstructor);
68
- }
69
- }
70
- exports.ScheduledActionBuilderWithState = ScheduledActionBuilderWithState;
71
- /**
72
- * Builder for `ScheduledAction` with state represented by default state (containing only last execution date).
73
- */
74
- class ScheduledActionBuilder extends ScheduledActionBuilderWithState {
75
- /**
76
- * Builder for `ScheduledAction` with state represented by default state (containing only last execution date).
77
- */
78
- constructor(name) {
79
- super(name, () => new actionStateBase_1.ActionStateBase());
80
- }
81
- }
82
- exports.ScheduledActionBuilder = ScheduledActionBuilder;
@@ -1,2 +0,0 @@
1
- export declare function inverseRecord<T extends PropertyKey, U extends PropertyKey>(input: Record<T, U>): Record<U, T>;
2
- //# sourceMappingURL=inverseRecord.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inverseRecord.d.ts","sourceRoot":"","sources":["../../helpers/inverseRecord.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,WAAW,EACtE,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAId,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CACpB"}
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.inverseRecord = inverseRecord;
4
- function inverseRecord(input) {
5
- return Object.fromEntries(Object.entries(input).map(([key, value]) => [value, key]));
6
- }
@@ -1,6 +0,0 @@
1
- export 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
- //# sourceMappingURL=noop.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"noop.d.ts","sourceRoot":"","sources":["../../helpers/noop.ts"],"names":[],"mappings":"AACA,qBAAa,IAAI;WACA,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"}
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Noop = void 0;
4
- /* eslint-disable @typescript-eslint/no-unused-vars */
5
- class Noop {
6
- static async true(arg1) {
7
- return true;
8
- }
9
- static async false(arg1) {
10
- return false;
11
- }
12
- static async call(arg1) { }
13
- }
14
- exports.Noop = Noop;
@@ -1,2 +0,0 @@
1
- export declare function reverseMap<K, V>(map: Map<K, V>): Map<V, K>;
2
- //# sourceMappingURL=reverseMap.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.reverseMap = reverseMap;
4
- function reverseMap(map) {
5
- return new Map(Array.from(map, ([key, value]) => [value, key]));
6
- }
@@ -1,2 +0,0 @@
1
- export declare function reverseRecord<T extends PropertyKey, U extends PropertyKey>(input: Record<T, U>): Record<U, T>;
2
- //# sourceMappingURL=reverseRecord.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reverseRecord.d.ts","sourceRoot":"","sources":["../../helpers/reverseRecord.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,WAAW,EACtE,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAId,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CACpB"}
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.reverseRecord = reverseRecord;
4
- function reverseRecord(input) {
5
- return Object.fromEntries(Object.entries(input).map(([key, value]) => [value, key]));
6
- }
@@ -1,5 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,14 +0,0 @@
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) {
7
- return (value * 1000);
8
- }
9
- function hoursToMilliseconds(value) {
10
- return (value * 60 * 60 * 1000);
11
- }
12
- function hoursToSeconds(value) {
13
- return (value * 60 * 60);
14
- }
@@ -1,2 +0,0 @@
1
- export declare function toArray<TType>(value: TType | TType[]): TType[];
2
- //# sourceMappingURL=toArray.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toArray.d.ts","sourceRoot":"","sources":["../../helpers/toArray.ts"],"names":[],"mappings":"AAAA,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,WAEpD"}
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toArray = toArray;
4
- function toArray(value) {
5
- return Array.isArray(value) ? value : [value];
6
- }
package/dist/index.d.ts DELETED
@@ -1,10 +0,0 @@
1
- export { startBot, stopBots } from './main';
2
- export { CommandActionBuilder } from './helpers/builders/commandActionBuilder';
3
- export { CommandActionBuilderWithState } from './helpers/builders/commandActionBuilder';
4
- export * from './helpers/builders/scheduledActionBuilder';
5
- export { IStorageClient } from './types/storage';
6
- export * from './types/actionState';
7
- export * from './entities/states/actionStateBase';
8
- export { Hours, Milliseconds, Seconds } from './types/timeValues';
9
- export { MessageType } from './types/messageTypes';
10
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
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,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,cAAc,qBAAqB,CAAC;AACpC,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js DELETED
@@ -1,29 +0,0 @@
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.MessageType = exports.CommandActionBuilderWithState = exports.CommandActionBuilder = exports.stopBots = exports.startBot = void 0;
18
- var main_1 = require("./main");
19
- Object.defineProperty(exports, "startBot", { enumerable: true, get: function () { return main_1.startBot; } });
20
- Object.defineProperty(exports, "stopBots", { enumerable: true, get: function () { return main_1.stopBots; } });
21
- var commandActionBuilder_1 = require("./helpers/builders/commandActionBuilder");
22
- Object.defineProperty(exports, "CommandActionBuilder", { enumerable: true, get: function () { return commandActionBuilder_1.CommandActionBuilder; } });
23
- var commandActionBuilder_2 = require("./helpers/builders/commandActionBuilder");
24
- Object.defineProperty(exports, "CommandActionBuilderWithState", { enumerable: true, get: function () { return commandActionBuilder_2.CommandActionBuilderWithState; } });
25
- __exportStar(require("./helpers/builders/scheduledActionBuilder"), exports);
26
- __exportStar(require("./types/actionState"), exports);
27
- __exportStar(require("./entities/states/actionStateBase"), exports);
28
- var messageTypes_1 = require("./types/messageTypes");
29
- Object.defineProperty(exports, "MessageType", { enumerable: true, get: function () { return messageTypes_1.MessageType; } });
package/dist/main.d.ts DELETED
@@ -1,35 +0,0 @@
1
- import { IStorageClient } from './types/storage';
2
- import { CommandAction } from './entities/actions/commandAction';
3
- import { ScheduledAction } from './entities/actions/scheduledAction';
4
- import { IActionState } from './types/actionState';
5
- import { BotInstance } from './entities/botInstance';
6
- import { Seconds } from './types/timeValues';
7
- /**
8
- * Starts bot
9
- */
10
- declare function startBot(options: {
11
- /** Bot name, used in logging */
12
- name: string;
13
- /** Path to file containing Telegram Bot token. */
14
- tokenFilePath: string;
15
- /** Collection of actions that will be executed as a response to message from used. Created using `CommandActionBuilder`.*/
16
- commands: CommandAction<IActionState>[];
17
- /** Collection of actions that will be executed on timer. Created using `ScheduledActionBuilder`.*/
18
- scheduled: ScheduledAction<IActionState>[];
19
- /** Object containing chat name and chat id pairs. Used for logging and execution of scheduled action. */
20
- chats: Record<string, number>;
21
- /** Storage client for bot state storage. If not provided, default `JsonFileStorage` will be used. */
22
- storageClient?: IStorageClient;
23
- /** Storage path for default `JsonFileStorage` client. Will be used only if `storageClient` is not provided. If not provided, default value of `./storage/` will be used.*/
24
- storagePath?: string;
25
- /** Period of time between execution of scheduled actions. */
26
- scheduledPeriod?: Seconds;
27
- /** If true, telegram API objects will be logged instead of message content. */
28
- verboseLoggingForIncomingMessage?: boolean;
29
- }): Promise<BotInstance>;
30
- /**
31
- * Terminates all scheduled tasks, closes storage connections and stops all bots.
32
- */
33
- declare function stopBots(reason: string): Promise<void>;
34
- export { startBot, stopBots };
35
- //# sourceMappingURL=main.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../main.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAQ7C;;GAEG;AACH,iBAAe,QAAQ,CAAC,OAAO,EAAE;IAC7B,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,2HAA2H;IAC3H,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;IACxC,mGAAmG;IACnG,SAAS,EAAE,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;IAC3C,yGAAyG;IACzG,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,qGAAqG;IACrG,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,2KAA2K;IAC3K,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+EAA+E;IAC/E,gCAAgC,CAAC,EAAE,OAAO,CAAC;CAC9C,wBAiBA;AAED;;GAEG;AACH,iBAAe,QAAQ,CAAC,MAAM,EAAE,MAAM,iBASrC;AAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC"}
package/dist/main.js DELETED
@@ -1,43 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.startBot = startBot;
4
- exports.stopBots = stopBots;
5
- const promises_1 = require("fs/promises");
6
- const logger_1 = require("./services/logger");
7
- const taskScheduler_1 = require("./services/taskScheduler");
8
- const botInstance_1 = require("./entities/botInstance");
9
- const bots = [];
10
- function log(text) {
11
- logger_1.Logger.logWithTraceId('ALL BOTS', 'System:Bot', 'System', text);
12
- }
13
- /**
14
- * Starts bot
15
- */
16
- async function startBot(options) {
17
- const token = await (0, promises_1.readFile)(options.tokenFilePath, 'utf8');
18
- const bot = new botInstance_1.BotInstance({
19
- name: options.name,
20
- token,
21
- commands: options.commands,
22
- scheduled: options.scheduled,
23
- chats: options.chats,
24
- storageClient: options.storageClient,
25
- storagePath: options.storagePath,
26
- scheduledPeriod: options.scheduledPeriod,
27
- verboseLoggingForIncomingMessage: options.verboseLoggingForIncomingMessage
28
- });
29
- bots.push(bot);
30
- return bot;
31
- }
32
- /**
33
- * Terminates all scheduled tasks, closes storage connections and stops all bots.
34
- */
35
- async function stopBots(reason) {
36
- log(`Recieved termination code: ${reason}`);
37
- taskScheduler_1.Scheduler.stopAll();
38
- log('Acquiring storage semaphore...');
39
- log('Stopping bots...');
40
- for (const bot of bots) {
41
- await bot.stop(reason);
42
- }
43
- }
@@ -1,22 +0,0 @@
1
- import { IStorageClient } from '../types/storage';
2
- import { ActionExecutionResult } from '../entities/actionExecutionResult';
3
- import { IActionState } from '../types/actionState';
4
- import { IActionWithState, ActionKey } from '../types/actionWithState';
5
- export declare class JsonFileStorage implements IStorageClient {
6
- private locks;
7
- private cache;
8
- private storagePath;
9
- private botName;
10
- constructor(botName: string, actions: IActionWithState[], path?: string);
11
- private lock;
12
- private loadInternal;
13
- private save;
14
- private buidPathFromKey;
15
- load<TActionState extends IActionState>(key: ActionKey): Promise<Record<number, TActionState>>;
16
- saveMetadata(actions: IActionWithState[], botName: string): Promise<void>;
17
- getActionState<TActionState extends IActionState>(action: IActionWithState, chatId: number): Promise<TActionState>;
18
- saveActionExecutionResult(action: IActionWithState, chatId: number, transactionResult: ActionExecutionResult): Promise<void>;
19
- close(): Promise<void>;
20
- updateStateFor<TActionState extends IActionState>(action: IActionWithState, chatId: number, update: (state: TActionState) => Promise<void>): Promise<void>;
21
- }
22
- //# sourceMappingURL=jsonFileStorage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsonFileStorage.d.ts","sourceRoot":"","sources":["../../services/jsonFileStorage.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAEvE,qBAAa,eAAgB,YAAW,cAAc;IAClD,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,KAAK,CAA4C;IACzD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM;YAgBzD,IAAI;YAgBJ,YAAY;YAqBZ,IAAI;IAalB,OAAO,CAAC,eAAe;IAOjB,IAAI,CAAC,YAAY,SAAS,YAAY,EAAE,GAAG,EAAE,SAAS;IAMtD,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,MAAM;IAUzD,cAAc,CAAC,YAAY,SAAS,YAAY,EAClD,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM;IAYZ,yBAAyB,CAC3B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,qBAAqB;IAYtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,cAAc,CAAC,YAAY,SAAS,YAAY,EAClD,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC;CAcrD"}
@@ -1,102 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JsonFileStorage = void 0;
4
- const fs_1 = require("fs");
5
- const path_1 = require("path");
6
- const promises_1 = require("fs/promises");
7
- const async_sema_1 = require("async-sema");
8
- class JsonFileStorage {
9
- constructor(botName, actions, path) {
10
- this.locks = new Map();
11
- this.cache = new Map();
12
- this.botName = botName;
13
- this.storagePath = path ?? 'storage';
14
- if (!(0, fs_1.existsSync)(`${this.storagePath}/${this.botName}/`)) {
15
- (0, fs_1.mkdirSync)(`${this.storagePath}/${this.botName}/`, {
16
- recursive: true
17
- });
18
- }
19
- for (const action of actions) {
20
- this.locks.set(action.key, new async_sema_1.Sema(1));
21
- }
22
- }
23
- async lock(key, action) {
24
- const lock = this.locks.get(key);
25
- if (!lock) {
26
- throw new Error(`Lock for action ${key} not found`);
27
- }
28
- await lock.acquire();
29
- try {
30
- return await action();
31
- }
32
- finally {
33
- lock.release();
34
- }
35
- }
36
- async loadInternal(key) {
37
- if (!this.cache.has(key)) {
38
- const targetPath = this.buidPathFromKey(key);
39
- if (!(0, fs_1.existsSync)(targetPath)) {
40
- return {};
41
- }
42
- const fileContent = await (0, promises_1.readFile)(targetPath, 'utf8');
43
- if (fileContent) {
44
- const data = JSON.parse(fileContent);
45
- this.cache.set(key, data);
46
- }
47
- }
48
- return (this.cache.get(key) ?? {});
49
- }
50
- async save(data, key) {
51
- this.cache.delete(key);
52
- const targetPath = this.buidPathFromKey(key);
53
- const folderName = (0, path_1.dirname)(targetPath);
54
- if (!(0, fs_1.existsSync)(folderName)) {
55
- await (0, promises_1.mkdir)(folderName, { recursive: true });
56
- }
57
- await (0, promises_1.writeFile)(targetPath, JSON.stringify(data), { flag: 'w+' });
58
- }
59
- buidPathFromKey(key) {
60
- return `${this.storagePath}/${this.botName}/${key.replaceAll(':', '/')}.json`;
61
- }
62
- async load(key) {
63
- return await this.lock(key, async () => {
64
- return this.loadInternal(key);
65
- });
66
- }
67
- async saveMetadata(actions, botName) {
68
- const targetPath = this.buidPathFromKey(`Metadata-${botName}`);
69
- await (0, promises_1.writeFile)(targetPath, JSON.stringify(actions), {
70
- flag: 'w+'
71
- });
72
- }
73
- async getActionState(action, chatId) {
74
- return await this.lock(action.key, async () => {
75
- const data = await this.loadInternal(action.key);
76
- return Object.assign(action.stateConstructor(), data[chatId]);
77
- });
78
- }
79
- async saveActionExecutionResult(action, chatId, transactionResult) {
80
- await this.lock(action.key, async () => {
81
- const data = await this.loadInternal(action.key);
82
- if (transactionResult.shouldUpdate) {
83
- data[chatId] = transactionResult.data;
84
- await this.save(data, action.key);
85
- }
86
- });
87
- }
88
- async close() {
89
- for (const lock of this.locks.values()) {
90
- await lock.acquire();
91
- }
92
- }
93
- async updateStateFor(action, chatId, update) {
94
- await this.lock(action.key, async () => {
95
- const data = await this.loadInternal(action.key);
96
- const state = Object.assign(action.stateConstructor(), data[chatId]);
97
- await update(state);
98
- await this.save(data, action.key);
99
- });
100
- }
101
- }
102
- exports.JsonFileStorage = JsonFileStorage;
@@ -1,9 +0,0 @@
1
- declare class JsonLogger {
2
- private serializeError;
3
- logObjectWithTraceId(botName: string, traceId: string | number, chatName: string, data: any): void;
4
- logWithTraceId(botName: string, traceId: string | number, chatName: string, text: string): void;
5
- errorWithTraceId<TData>(botName: string, traceId: string | number, chatName: string, errorObj: unknown, extraData?: TData | undefined): void;
6
- }
7
- export declare const Logger: JsonLogger;
8
- export {};
9
- //# sourceMappingURL=logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../services/logger.ts"],"names":[],"mappings":"AAAA,cAAM,UAAU;IAEZ,OAAO,CAAC,cAAc;IAQtB,oBAAoB,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,QAAQ,EAAE,MAAM,EAEhB,IAAI,EAAE,GAAG;IAQb,cAAc,CACV,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM;IAOhB,gBAAgB,CAAC,KAAK,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,EACjB,SAAS,CAAC,EAAE,KAAK,GAAG,SAAS;CAQpC;AAED,eAAO,MAAM,MAAM,YAAmB,CAAC"}