chz-telegram-bot 0.0.2 → 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.
- package/dist/entities/actions/commandAction.d.ts +22 -0
- package/dist/entities/actions/commandAction.d.ts.map +1 -0
- package/dist/entities/actions/commandAction.js +2 -3
- package/dist/entities/actions/scheduledAction.d.ts +24 -0
- package/dist/entities/actions/scheduledAction.d.ts.map +1 -0
- package/dist/entities/actions/scheduledAction.js +2 -3
- package/dist/entities/bot.d.ts +27 -0
- package/dist/entities/bot.d.ts.map +1 -0
- package/dist/entities/bot.js +14 -10
- package/dist/entities/cachedStateFactory.d.ts +7 -0
- package/dist/entities/cachedStateFactory.d.ts.map +1 -0
- package/dist/entities/commandTriggerCheckResult.d.ts +10 -0
- package/dist/entities/commandTriggerCheckResult.d.ts.map +1 -0
- package/dist/entities/context/chatContext.d.ts +15 -0
- package/dist/entities/context/chatContext.d.ts.map +1 -0
- package/dist/entities/context/chatContext.js +2 -1
- package/dist/entities/context/messageContext.d.ts +22 -0
- package/dist/entities/context/messageContext.d.ts.map +1 -0
- package/dist/entities/context/messageContext.js +3 -4
- package/dist/entities/incomingMessage.d.ts +16 -0
- package/dist/entities/incomingMessage.d.ts.map +1 -0
- package/dist/entities/incomingMessage.js +2 -5
- package/dist/entities/responses/imageMessage.d.ts +10 -0
- package/dist/entities/responses/imageMessage.d.ts.map +1 -0
- package/dist/entities/responses/reaction.d.ts +9 -0
- package/dist/entities/responses/reaction.d.ts.map +1 -0
- package/dist/entities/responses/textMessage.d.ts +9 -0
- package/dist/entities/responses/textMessage.d.ts.map +1 -0
- package/dist/entities/responses/videoMessage.d.ts +10 -0
- package/dist/entities/responses/videoMessage.d.ts.map +1 -0
- package/dist/entities/states/actionStateBase.d.ts +5 -0
- package/dist/entities/states/actionStateBase.d.ts.map +1 -0
- package/dist/entities/taskRecord.d.ts +8 -0
- package/dist/entities/taskRecord.d.ts.map +1 -0
- package/dist/entities/transactionResult.d.ts +7 -0
- package/dist/entities/transactionResult.d.ts.map +1 -0
- package/dist/helpers/builders/commandActionBuilder.d.ts +30 -0
- package/dist/helpers/builders/commandActionBuilder.d.ts.map +1 -0
- package/dist/helpers/builders/scheduledActionBuilder.d.ts +20 -0
- package/dist/helpers/builders/scheduledActionBuilder.d.ts.map +1 -0
- package/dist/helpers/noop.d.ts +7 -0
- package/dist/helpers/noop.d.ts.map +1 -0
- package/dist/helpers/reverseMap.d.ts +2 -0
- package/dist/helpers/reverseMap.d.ts.map +1 -0
- package/dist/helpers/timeConvertions.d.ts +5 -0
- package/dist/helpers/timeConvertions.d.ts.map +1 -0
- package/dist/helpers/toArray.d.ts +2 -0
- package/dist/helpers/toArray.d.ts.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -17
- package/dist/main.d.ts +8 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +10 -6
- package/dist/services/jsonFileStorage.d.ts +23 -0
- package/dist/services/jsonFileStorage.d.ts.map +1 -0
- package/dist/services/{storage.js → jsonFileStorage.js} +13 -11
- package/dist/services/logger.d.ts +7 -0
- package/dist/services/logger.d.ts.map +1 -0
- package/dist/services/taskScheduler.d.ts +11 -0
- package/dist/services/taskScheduler.d.ts.map +1 -0
- package/dist/services/telegramApi.d.ts +27 -0
- package/dist/services/telegramApi.d.ts.map +1 -0
- package/dist/services/telegramApi.js +4 -3
- package/dist/types/actionState.d.ts +4 -0
- package/dist/types/actionState.d.ts.map +1 -0
- package/dist/types/actionWithState.d.ts +6 -0
- package/dist/types/actionWithState.d.ts.map +1 -0
- package/dist/types/cachedValueAccessor.d.ts +2 -0
- package/dist/types/cachedValueAccessor.d.ts.map +1 -0
- package/dist/types/commandCondition.d.ts +4 -0
- package/dist/types/commandCondition.d.ts.map +1 -0
- package/dist/types/daysOfTheWeek.d.ts +10 -0
- package/dist/types/daysOfTheWeek.d.ts.map +1 -0
- package/dist/types/handlers.d.ts +7 -0
- package/dist/types/handlers.d.ts.map +1 -0
- package/dist/types/replyMessage.d.ts +7 -0
- package/dist/types/replyMessage.d.ts.map +1 -0
- package/dist/types/storage.d.ts +12 -0
- package/dist/types/storage.d.ts.map +1 -0
- package/dist/types/timeValues.d.ts +11 -0
- package/dist/types/timeValues.d.ts.map +1 -0
- package/entities/actions/commandAction.ts +4 -5
- package/entities/actions/scheduledAction.ts +2 -3
- package/entities/bot.ts +39 -24
- package/entities/context/chatContext.ts +5 -1
- package/entities/context/messageContext.ts +10 -6
- package/entities/incomingMessage.ts +2 -2
- package/index.ts +28 -3
- package/main.ts +12 -8
- package/package.json +1 -2
- package/services/{storage.ts → jsonFileStorage.ts} +20 -14
- package/services/telegramApi.ts +8 -2
- package/tsconfig.json +2 -2
- package/types/storage.ts +19 -0
- package/dist/entities/states/potuzhnoState.js +0 -13
- package/dist/helpers/escapeMarkdown.js +0 -17
- package/dist/helpers/getWeek.js +0 -12
- package/dist/helpers/randomInt.js +0 -8
- package/entities/states/potuzhnoState.ts +0 -5
- package/helpers/escapeMarkdown.ts +0 -12
- package/helpers/getWeek.ts +0 -8
- package/helpers/randomInt.ts +0 -7
- package/types/scheduledItem.ts +0 -6
- /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
|
|
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
|
|
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
|
|
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
|
|
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"}
|
package/dist/entities/bot.js
CHANGED
|
@@ -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
|
|
12
|
+
const jsonFileStorage_1 = __importDefault(require("../services/jsonFileStorage"));
|
|
13
13
|
class Bot {
|
|
14
|
-
constructor(
|
|
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.
|
|
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
|
-
|
|
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
|
|
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
|
|
3
|
+
const crypto_1 = require("crypto");
|
|
7
4
|
class IncomingMessage {
|
|
8
5
|
constructor(ctxMessage) {
|
|
9
|
-
this.traceId = (0,
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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"}
|
package/dist/index.js
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
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);
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
4
|
};
|
|
16
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.stopBots = exports.startBot = void 0;
|
|
18
|
-
|
|
6
|
+
exports.helpers = exports.ScheduledActionBuilder = exports.CommandActionBuilderWithState = exports.CommandActionBuilder = exports.stopBots = exports.startBot = void 0;
|
|
7
|
+
const main_1 = require("./main");
|
|
19
8
|
Object.defineProperty(exports, "startBot", { enumerable: true, get: function () { return main_1.startBot; } });
|
|
20
9
|
Object.defineProperty(exports, "stopBots", { enumerable: true, get: function () { return main_1.stopBots; } });
|
|
21
|
-
|
|
22
|
-
|
|
10
|
+
const commandActionBuilder_1 = require("./helpers/builders/commandActionBuilder");
|
|
11
|
+
Object.defineProperty(exports, "CommandActionBuilder", { enumerable: true, get: function () { return commandActionBuilder_1.CommandActionBuilder; } });
|
|
12
|
+
const commandActionBuilder_2 = require("./helpers/builders/commandActionBuilder");
|
|
13
|
+
Object.defineProperty(exports, "CommandActionBuilderWithState", { enumerable: true, get: function () { return commandActionBuilder_2.CommandActionBuilderWithState; } });
|
|
14
|
+
const scheduledActionBuilder_1 = __importDefault(require("./helpers/builders/scheduledActionBuilder"));
|
|
15
|
+
exports.ScheduledActionBuilder = scheduledActionBuilder_1.default;
|
|
16
|
+
const timeConvertions_1 = require("./helpers/timeConvertions");
|
|
17
|
+
const noop_1 = __importDefault(require("./helpers/noop"));
|
|
18
|
+
const helpers = {
|
|
19
|
+
hoursToMilliseconds: timeConvertions_1.hoursToMilliseconds,
|
|
20
|
+
hoursToSeconds: timeConvertions_1.hoursToSeconds,
|
|
21
|
+
secondsToMilliseconds: timeConvertions_1.secondsToMilliseconds,
|
|
22
|
+
Noop: noop_1.default
|
|
23
|
+
};
|
|
24
|
+
exports.helpers = helpers;
|