@futdevpro/nts-dynamo 1.14.24 → 1.14.27
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/build/_modules/ai/_services/ai-provider.service-base.d.ts +1 -1
- package/build/_modules/ai/_services/ai-provider.service-base.d.ts.map +1 -1
- package/build/_modules/ai/_services/oai-to-ai-adapter.service.d.ts +39 -0
- package/build/_modules/ai/_services/oai-to-ai-adapter.service.d.ts.map +1 -0
- package/build/_modules/ai/_services/oai-to-ai-adapter.service.js +218 -0
- package/build/_modules/ai/_services/oai-to-ai-adapter.service.js.map +1 -0
- package/build/_modules/assistant/_services/ass-io.control-service.d.ts +4 -3
- package/build/_modules/assistant/_services/ass-io.control-service.d.ts.map +1 -1
- package/build/_modules/assistant/_services/ass-io.control-service.js +6 -6
- package/build/_modules/assistant/_services/ass-io.control-service.js.map +1 -1
- package/build/_modules/assistant/_services/ass-main.control-service.d.ts +2 -2
- package/build/_modules/assistant/_services/ass-main.control-service.d.ts.map +1 -1
- package/build/_modules/assistant/_services/ass.service-base.d.ts +7 -5
- package/build/_modules/assistant/_services/ass.service-base.d.ts.map +1 -1
- package/build/_modules/assistant/_services/ass.service-base.js +6 -4
- package/build/_modules/assistant/_services/ass.service-base.js.map +1 -1
- package/build/_modules/bot/_collections/bot-operations.util.d.ts +13 -13
- package/build/_modules/bot/_collections/bot-operations.util.d.ts.map +1 -1
- package/build/_modules/bot/_collections/bot-operations.util.js.map +1 -1
- package/build/_modules/bot/_enums/bot-message-provider.enum.d.ts +8 -0
- package/build/_modules/bot/_enums/bot-message-provider.enum.d.ts.map +1 -0
- package/build/_modules/bot/_enums/bot-message-provider.enum.js +12 -0
- package/build/_modules/bot/_enums/bot-message-provider.enum.js.map +1 -0
- package/build/_modules/bot/_models/bot-channel.interface.d.ts +2 -2
- package/build/_modules/bot/_models/bot-channel.interface.d.ts.map +1 -1
- package/build/_modules/bot/_models/bot-command.interface.d.ts +3 -3
- package/build/_modules/bot/_models/bot-command.interface.d.ts.map +1 -1
- package/build/_modules/bot/_models/bot-global-settings.interface.d.ts +7 -0
- package/build/_modules/bot/_models/bot-global-settings.interface.d.ts.map +1 -1
- package/build/_modules/bot/_models/bot-message-wrapper.interface.d.ts +21 -0
- package/build/_modules/bot/_models/bot-message-wrapper.interface.d.ts.map +1 -0
- package/build/_modules/bot/_models/bot-message-wrapper.interface.js +3 -0
- package/build/_modules/bot/_models/bot-message-wrapper.interface.js.map +1 -0
- package/build/_modules/bot/_models/bot-message.interface.d.ts +2 -2
- package/build/_modules/bot/_models/bot-message.interface.d.ts.map +1 -1
- package/build/_modules/bot/_models/bot-messaging-provider.interface.d.ts +68 -0
- package/build/_modules/bot/_models/bot-messaging-provider.interface.d.ts.map +1 -0
- package/build/_modules/bot/_models/bot-messaging-provider.interface.js +3 -0
- package/build/_modules/bot/_models/bot-messaging-provider.interface.js.map +1 -0
- package/build/_modules/bot/_modules/discord-bot/_collections/dib-operations.util.d.ts +2 -2
- package/build/_modules/bot/_modules/discord-bot/_collections/dib-operations.util.d.ts.map +1 -1
- package/build/_modules/bot/_modules/discord-bot/_collections/dib.util.d.ts +2 -2
- package/build/_modules/bot/_modules/discord-bot/_collections/dib.util.d.ts.map +1 -1
- package/build/_modules/bot/_modules/discord-bot/_collections/dib.util.js.map +1 -1
- package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.service.d.ts +56 -0
- package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.service.d.ts.map +1 -0
- package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.service.js +379 -0
- package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.service.js.map +1 -0
- package/build/_modules/bot/_modules/discord-bot/index.d.ts +1 -1
- package/build/_modules/bot/_modules/discord-bot/index.d.ts.map +1 -1
- package/build/_modules/bot/_modules/discord-bot/index.js +1 -1
- package/build/_modules/bot/_modules/discord-bot/index.js.map +1 -1
- package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.d.ts +3 -3
- package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.d.ts.map +1 -1
- package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.js.map +1 -1
- package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb.util.d.ts +2 -2
- package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb.util.d.ts.map +1 -1
- package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb.util.js.map +1 -1
- package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.service.d.ts +55 -0
- package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.service.d.ts.map +1 -0
- package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.service.js +313 -0
- package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.service.js.map +1 -0
- package/build/_modules/bot/_modules/dynamo-bot/index.d.ts +1 -1
- package/build/_modules/bot/_modules/dynamo-bot/index.d.ts.map +1 -1
- package/build/_modules/bot/_modules/dynamo-bot/index.js +1 -1
- package/build/_modules/bot/_modules/dynamo-bot/index.js.map +1 -1
- package/build/_modules/bot/_modules/slack-bot/_collections/slb-operations.util.d.ts +2 -2
- package/build/_modules/bot/_modules/slack-bot/_collections/slb-operations.util.d.ts.map +1 -1
- package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.service.d.ts +41 -0
- package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.service.d.ts.map +1 -0
- package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.service.js +119 -0
- package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.service.js.map +1 -0
- package/build/_modules/bot/_modules/slack-bot/index.d.ts +1 -1
- package/build/_modules/bot/_modules/slack-bot/index.d.ts.map +1 -1
- package/build/_modules/bot/_modules/slack-bot/index.js +1 -1
- package/build/_modules/bot/_modules/slack-bot/index.js.map +1 -1
- package/build/_modules/bot/_modules/teams-bot/_collections/teb-operations.util.d.ts +2 -2
- package/build/_modules/bot/_modules/teams-bot/_collections/teb-operations.util.d.ts.map +1 -1
- package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.service.d.ts +41 -0
- package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.service.d.ts.map +1 -0
- package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.service.js +119 -0
- package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.service.js.map +1 -0
- package/build/_modules/bot/_modules/teams-bot/index.d.ts +1 -1
- package/build/_modules/bot/_modules/teams-bot/index.d.ts.map +1 -1
- package/build/_modules/bot/_modules/teams-bot/index.js +1 -1
- package/build/_modules/bot/_modules/teams-bot/index.js.map +1 -1
- package/build/_modules/bot/_services/bot-commands.control-service.d.ts +7 -6
- package/build/_modules/bot/_services/bot-commands.control-service.d.ts.map +1 -1
- package/build/_modules/bot/_services/bot-commands.control-service.js +3 -2
- package/build/_modules/bot/_services/bot-commands.control-service.js.map +1 -1
- package/build/_modules/bot/_services/bot-io.control-service.d.ts +13 -12
- package/build/_modules/bot/_services/bot-io.control-service.d.ts.map +1 -1
- package/build/_modules/bot/_services/bot-io.control-service.js +24 -17
- package/build/_modules/bot/_services/bot-io.control-service.js.map +1 -1
- package/build/_modules/bot/_services/bot-main.control-service.d.ts +25 -12
- package/build/_modules/bot/_services/bot-main.control-service.d.ts.map +1 -1
- package/build/_modules/bot/_services/bot-main.control-service.js +112 -2
- package/build/_modules/bot/_services/bot-main.control-service.js.map +1 -1
- package/build/_modules/bot/_services/bot-messaging-provider-factory.service.d.ts +6 -0
- package/build/_modules/bot/_services/bot-messaging-provider-factory.service.d.ts.map +1 -0
- package/build/_modules/bot/_services/bot-messaging-provider-factory.service.js +47 -0
- package/build/_modules/bot/_services/bot-messaging-provider-factory.service.js.map +1 -0
- package/build/_modules/bot/_services/bot-routines.control-service.d.ts +2 -2
- package/build/_modules/bot/_services/bot-routines.control-service.d.ts.map +1 -1
- package/build/_modules/bot/index.d.ts +4 -3
- package/build/_modules/bot/index.d.ts.map +1 -1
- package/build/_modules/bot/index.js +4 -3
- package/build/_modules/bot/index.js.map +1 -1
- package/build/_modules/discord-bot/_services/dibo-main.control-service.d.ts.map +1 -1
- package/build/_modules/discord-bot/_services/dibo-main.control-service.js +2 -0
- package/build/_modules/discord-bot/_services/dibo-main.control-service.js.map +1 -1
- package/package.json +1 -1
- package/src/_modules/ai/_services/ai-provider.service-base.ts +1 -1
- package/src/_modules/assistant/_services/ass-io.control-service.ts +14 -9
- package/src/_modules/assistant/_services/ass-main.control-service.ts +3 -3
- package/src/_modules/assistant/_services/ass.service-base.ts +22 -14
- package/src/_modules/bot/_collections/bot-operations.util.ts +14 -14
- package/src/_modules/bot/_enums/{bot-provider.enum.ts → bot-message-provider.enum.ts} +1 -1
- package/src/_modules/bot/_models/bot-channel.interface.ts +2 -2
- package/src/_modules/bot/_models/bot-command.interface.ts +3 -3
- package/src/_modules/bot/_models/bot-global-settings.interface.ts +9 -0
- package/src/_modules/bot/_models/bot-message-wrapper.interface.ts +31 -0
- package/src/_modules/bot/_models/bot-message.interface.ts +2 -2
- package/src/_modules/bot/_models/{bot-provider.interface.ts → bot-messaging-provider.interface.ts} +26 -23
- package/src/_modules/bot/_modules/discord-bot/_collections/dib-operations.util.ts +2 -2
- package/src/_modules/bot/_modules/discord-bot/_collections/dib.util.ts +2 -2
- package/src/_modules/bot/_modules/discord-bot/_services/{dib-provider.service.ts → dib-messaging-provider.service.ts} +20 -7
- package/src/_modules/bot/_modules/discord-bot/index.ts +1 -1
- package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.ts +3 -3
- package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb.util.ts +2 -2
- package/src/_modules/bot/_modules/dynamo-bot/_services/{dyb-provider.service.ts → dyb-messaging-provider.service.ts} +12 -8
- package/src/_modules/bot/_modules/dynamo-bot/index.ts +1 -1
- package/src/_modules/bot/_modules/slack-bot/_collections/slb-operations.util.ts +2 -2
- package/src/_modules/bot/_modules/slack-bot/_services/{slb-provider.service.ts → slb-messaging-provider.service.ts} +11 -7
- package/src/_modules/bot/_modules/slack-bot/index.ts +1 -1
- package/src/_modules/bot/_modules/teams-bot/_collections/teb-operations.util.ts +2 -2
- package/src/_modules/bot/_modules/teams-bot/_services/{teb-provider.service.ts → teb-messaging-provider.service.ts} +11 -7
- package/src/_modules/bot/_modules/teams-bot/index.ts +1 -1
- package/src/_modules/bot/_services/bot-commands.control-service.ts +17 -15
- package/src/_modules/bot/_services/bot-io.control-service.ts +42 -33
- package/src/_modules/bot/_services/bot-main.control-service.ts +171 -39
- package/src/_modules/bot/_services/bot-messaging-provider-factory.service.ts +56 -0
- package/src/_modules/bot/_services/bot-routines.control-service.ts +3 -3
- package/src/_modules/bot/index.ts +4 -3
- package/src/_modules/discord-bot/_services/dibo-main.control-service.ts +2 -0
- package/src/_modules/bot/_services/bot-provider-factory.service.ts +0 -34
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DyNTS_Bot_MessagingProvider, DyNTS_Bot_MessagingProvider_Config } from '../../../_models/bot-messaging-provider.interface';
|
|
2
2
|
import { DyNTS_Bot_LastMessageDate } from '../../../_models/bot-last-message-date.interface';
|
|
3
3
|
import { DyNTS_Bot_LastMentionDate } from '../../../_models/bot-last-mention-date.interface';
|
|
4
|
-
import {
|
|
4
|
+
import { DyNTS_Bot_MessageProvider_Type } from '../../../_enums/bot-message-provider.enum';
|
|
5
5
|
import { DyNTS_TeB_Message, DyNTS_TeB_Channel, DyNTS_TeB_User } from '../_models/teb-platform.types';
|
|
6
6
|
|
|
7
|
-
export class
|
|
7
|
+
export class DyNTS_TeB_MessagingProvider implements DyNTS_Bot_MessagingProvider<
|
|
8
8
|
DyNTS_TeB_Channel,
|
|
9
9
|
DyNTS_TeB_Message,
|
|
10
10
|
DyNTS_TeB_User
|
|
11
11
|
> {
|
|
12
12
|
private isInitialized: boolean = false;
|
|
13
|
-
private config:
|
|
13
|
+
private config: DyNTS_Bot_MessagingProvider_Config;
|
|
14
14
|
|
|
15
15
|
// Event handlers
|
|
16
16
|
private messageHandlers: Array<(message: DyNTS_TeB_Message, issuer: string) => void> = [];
|
|
17
17
|
private readyHandlers: Array<() => void> = [];
|
|
18
18
|
private errorHandlers: Array<(error: Error) => void> = [];
|
|
19
19
|
|
|
20
|
-
async initialize(config:
|
|
20
|
+
async initialize(config: DyNTS_Bot_MessagingProvider_Config): Promise<void> {
|
|
21
21
|
this.config = config;
|
|
22
22
|
|
|
23
|
-
if (config.
|
|
24
|
-
throw new Error(`Invalid provider type: ${config.
|
|
23
|
+
if (config.messageProvider !== DyNTS_Bot_MessageProvider_Type.teams) {
|
|
24
|
+
throw new Error(`Invalid provider type: ${config.messageProvider}. Expected 'teams'`);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
if (!config.teams) {
|
|
@@ -146,6 +146,10 @@ export class DyNTS_TeB_Provider implements DyNTS_Bot_Provider<
|
|
|
146
146
|
return 'teams';
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
+
getProviderId(): string {
|
|
150
|
+
return this.config?.providerId || this.getProviderName();
|
|
151
|
+
}
|
|
152
|
+
|
|
149
153
|
isReady(): boolean {
|
|
150
154
|
return this.isInitialized;
|
|
151
155
|
}
|
|
@@ -7,28 +7,29 @@ import { DyNTS_Bot_Message } from '../_models/bot-message.interface';
|
|
|
7
7
|
import { DyNTS_Bot_Global_Settings } from '../_models/bot-global-settings.interface';
|
|
8
8
|
import { DyNTS_Bot_User } from '../_models/bot-user.interface';
|
|
9
9
|
import { DyNTS_Bot_Channel } from '../_models/bot-channel.interface';
|
|
10
|
-
import {
|
|
10
|
+
import { DyNTS_Bot_MessagingProvider, DyNTS_Bot_MessagingProvider_Config } from '../_models/bot-messaging-provider.interface';
|
|
11
|
+
import { DyNTS_Bot_MessageWrapper } from '../_models/bot-message-wrapper.interface';
|
|
11
12
|
|
|
12
13
|
export abstract class DyNTS_Bot_Commands_ControlService<
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
> =
|
|
14
|
+
T_MessagingPlatformMessage extends DyNTS_Bot_Message<any> = DyNTS_Bot_Message<any>,
|
|
15
|
+
T_MessagingPlatformChannel extends DyNTS_Bot_Channel<any> = DyNTS_Bot_Channel<any>,
|
|
16
|
+
T_MessagingPlatformUser extends DyNTS_Bot_User<any> = DyNTS_Bot_User<any>,
|
|
17
|
+
T_MessagingPlatformProvider extends DyNTS_Bot_MessagingProvider<
|
|
18
|
+
T_MessagingPlatformChannel,
|
|
19
|
+
T_MessagingPlatformMessage,
|
|
20
|
+
T_MessagingPlatformUser
|
|
21
|
+
> = DyNTS_Bot_MessagingProvider<T_MessagingPlatformChannel, T_MessagingPlatformMessage, T_MessagingPlatformUser>
|
|
21
22
|
> extends DyNTS_SingletonService {
|
|
22
23
|
|
|
23
24
|
static getInstance<T_PlatformMessage extends DyNTS_Bot_Message<any>>(): DyNTS_Bot_Commands_ControlService<T_PlatformMessage> {
|
|
24
25
|
return DyNTS_Bot_Commands_ControlService.getSingletonInstance();
|
|
25
26
|
}
|
|
26
27
|
|
|
27
|
-
protected abstract getMainBotControlService(): DyNTS_Bot_Main_ControlService<
|
|
28
|
-
protected readonly mainBot_CS: DyNTS_Bot_Main_ControlService<
|
|
28
|
+
protected abstract getMainBotControlService(): DyNTS_Bot_Main_ControlService<T_MessagingPlatformChannel, T_MessagingPlatformMessage, T_MessagingPlatformUser, T_MessagingPlatformProvider>;
|
|
29
|
+
protected readonly mainBot_CS: DyNTS_Bot_Main_ControlService<T_MessagingPlatformChannel, T_MessagingPlatformMessage, T_MessagingPlatformUser, T_MessagingPlatformProvider> =
|
|
29
30
|
this.getMainBotControlService();
|
|
30
31
|
|
|
31
|
-
get provider():
|
|
32
|
+
get provider(): T_MessagingPlatformProvider {
|
|
32
33
|
return this.mainBot_CS?.provider;
|
|
33
34
|
}
|
|
34
35
|
|
|
@@ -50,9 +51,9 @@ export abstract class DyNTS_Bot_Commands_ControlService<
|
|
|
50
51
|
}
|
|
51
52
|
}
|
|
52
53
|
|
|
53
|
-
async handleCommand(message:
|
|
54
|
+
async handleCommand(message: T_MessagingPlatformMessage, wrapper: DyNTS_Bot_MessageWrapper<T_MessagingPlatformMessage>, issuer: string): Promise<void> {
|
|
54
55
|
try {
|
|
55
|
-
const botSettings = DyNTS_global_settings.bot_settings as
|
|
56
|
+
const botSettings = DyNTS_global_settings.bot_settings as DyNTS_Bot_MessagingProvider_Config;
|
|
56
57
|
let haveCommandOperator = false;
|
|
57
58
|
let msg = message.content.replace(
|
|
58
59
|
`<@${this.mainBot_CS.botClientId}>`, ''
|
|
@@ -110,7 +111,8 @@ export abstract class DyNTS_Bot_Commands_ControlService<
|
|
|
110
111
|
|
|
111
112
|
await commandExists.commandHandler(message);
|
|
112
113
|
} catch (error) {
|
|
113
|
-
this.provider
|
|
114
|
+
const provider = wrapper?.provider || this.provider;
|
|
115
|
+
provider.replyToMessage(
|
|
114
116
|
message.id,
|
|
115
117
|
message.channelId,
|
|
116
118
|
`Error occurred while handling the command:\n` +
|
|
@@ -7,21 +7,22 @@ import { DyNTS_global_settings } from '../../../_collections/global-settings.con
|
|
|
7
7
|
import { DyNTS_Bot_Message } from '../_models/bot-message.interface'
|
|
8
8
|
import { DyNTS_Bot_Channel } from '../_models/bot-channel.interface'
|
|
9
9
|
import { DyNTS_Bot_User } from '../_models/bot-user.interface'
|
|
10
|
-
import {
|
|
10
|
+
import { DyNTS_Bot_MessagingProvider } from '../_models/bot-messaging-provider.interface'
|
|
11
11
|
import { DyNTS_Bot_Global_Settings } from '../_models/bot-global-settings.interface'
|
|
12
|
+
import { DyNTS_Bot_MessageWrapper } from '../_models/bot-message-wrapper.interface'
|
|
12
13
|
import { DyNTS_Msg_Integration_ControlService } from '../../messaging/_services/msg-integration.control-service'
|
|
13
14
|
|
|
14
15
|
export abstract class DyNTS_Bot_IO_ControlService<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
T_MessagingPlatformChannel extends DyNTS_Bot_Channel<any> = DyNTS_Bot_Channel<any>,
|
|
17
|
+
T_MessagingPlatformMessage extends DyNTS_Bot_Message<any> = DyNTS_Bot_Message<any>,
|
|
18
|
+
T_MessagingPlatformUser extends DyNTS_Bot_User<any> = DyNTS_Bot_User<any>,
|
|
19
|
+
T_MessagingPlatformProvider extends DyNTS_Bot_MessagingProvider<T_MessagingPlatformChannel, T_MessagingPlatformMessage, T_MessagingPlatformUser> = DyNTS_Bot_MessagingProvider<T_MessagingPlatformChannel, T_MessagingPlatformMessage, T_MessagingPlatformUser>
|
|
19
20
|
> extends DyNTS_SingletonService {
|
|
20
21
|
|
|
21
|
-
protected abstract getMainBotControlService(): DyNTS_Bot_Main_ControlService<
|
|
22
|
-
protected abstract mainBot_CS: DyNTS_Bot_Main_ControlService<
|
|
22
|
+
protected abstract getMainBotControlService(): DyNTS_Bot_Main_ControlService<T_MessagingPlatformChannel, T_MessagingPlatformMessage, T_MessagingPlatformUser, T_MessagingPlatformProvider>;
|
|
23
|
+
protected abstract mainBot_CS: DyNTS_Bot_Main_ControlService<T_MessagingPlatformChannel, T_MessagingPlatformMessage, T_MessagingPlatformUser, T_MessagingPlatformProvider>;
|
|
23
24
|
|
|
24
|
-
get provider():
|
|
25
|
+
get provider(): T_MessagingPlatformProvider {
|
|
25
26
|
return this.mainBot_CS?.provider;
|
|
26
27
|
}
|
|
27
28
|
|
|
@@ -33,8 +34,8 @@ export abstract class DyNTS_Bot_IO_ControlService<
|
|
|
33
34
|
return this.mainBot_CS.botDisplayName;
|
|
34
35
|
}
|
|
35
36
|
|
|
36
|
-
protected abstract getCommandsControlService(): DyNTS_Bot_Commands_ControlService<
|
|
37
|
-
protected commands_CS: DyNTS_Bot_Commands_ControlService<
|
|
37
|
+
protected abstract getCommandsControlService(): DyNTS_Bot_Commands_ControlService<T_MessagingPlatformMessage>;
|
|
38
|
+
protected commands_CS: DyNTS_Bot_Commands_ControlService<T_MessagingPlatformMessage>;
|
|
38
39
|
|
|
39
40
|
dontSendErrorReply?: boolean;
|
|
40
41
|
|
|
@@ -64,27 +65,28 @@ export abstract class DyNTS_Bot_IO_ControlService<
|
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
67
|
|
|
67
|
-
async handleNewMessage(
|
|
68
|
+
async handleNewMessage(wrapper: DyNTS_Bot_MessageWrapper<T_MessagingPlatformMessage>, issuer: string): Promise<void> {
|
|
68
69
|
try {
|
|
70
|
+
const message = wrapper.message;
|
|
69
71
|
const botSettings = DyNTS_global_settings.bot_settings as DyNTS_Bot_Global_Settings;
|
|
70
72
|
|
|
71
73
|
if (botSettings?.debugLevel >= 1) {
|
|
72
|
-
DyFM_Log.H_log(`incoming message (${message.authorDisplayName}):\n${message.content}`)
|
|
74
|
+
DyFM_Log.H_log(`incoming message (${message.authorDisplayName}) [${wrapper.providerId}]:\n${message.content}`)
|
|
73
75
|
}
|
|
74
76
|
|
|
75
|
-
const isForYou = await this.getMessageIsForBotToHandle(message, issuer);
|
|
77
|
+
const isForYou = await this.getMessageIsForBotToHandle(message, wrapper, issuer);
|
|
76
78
|
|
|
77
79
|
if (!isForYou) {
|
|
78
80
|
return;
|
|
79
81
|
}
|
|
80
82
|
|
|
81
|
-
const isHandledAsCommand = await this.handleIfCommand(message, issuer);
|
|
83
|
+
const isHandledAsCommand = await this.handleIfCommand(message, wrapper, issuer);
|
|
82
84
|
|
|
83
85
|
if (isHandledAsCommand) {
|
|
84
86
|
return;
|
|
85
87
|
}
|
|
86
88
|
|
|
87
|
-
await this.handleMessage(message, issuer);
|
|
89
|
+
await this.handleMessage(message, wrapper, issuer);
|
|
88
90
|
|
|
89
91
|
// Sync message to messaging system if enabled
|
|
90
92
|
try {
|
|
@@ -94,7 +96,7 @@ export abstract class DyNTS_Bot_IO_ControlService<
|
|
|
94
96
|
// Find or create conversation for this channel
|
|
95
97
|
const conversation = await messagingIntegration.findOrCreateBotConversation(
|
|
96
98
|
message.channelId,
|
|
97
|
-
|
|
99
|
+
wrapper.providerType,
|
|
98
100
|
issuer
|
|
99
101
|
);
|
|
100
102
|
|
|
@@ -115,14 +117,16 @@ export abstract class DyNTS_Bot_IO_ControlService<
|
|
|
115
117
|
const botSettings = DyNTS_global_settings.bot_settings as DyNTS_Bot_Global_Settings;
|
|
116
118
|
|
|
117
119
|
if (!this.dontSendErrorReply && botSettings?.debugLevel >= 1) {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
120
|
+
if (wrapper.provider && wrapper.message) {
|
|
121
|
+
await wrapper.provider.replyToMessage(
|
|
122
|
+
wrapper.message.id,
|
|
123
|
+
wrapper.message.channelId,
|
|
124
|
+
`[SYSTEM|ERROR|${DyNTS_global_settings.systemShortCodeName}|DyNTS-Bot-IO-H0] Error occurred while handling the message:\n` +
|
|
125
|
+
DyFM_Error.getAnyMessage(error)
|
|
126
|
+
).catch(err => {
|
|
127
|
+
DyFM_Error.logSimple('❌❌ Error sending message to report channel:', err);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
126
130
|
}
|
|
127
131
|
|
|
128
132
|
throw new DyFM_Error({
|
|
@@ -132,17 +136,19 @@ export abstract class DyNTS_Bot_IO_ControlService<
|
|
|
132
136
|
}
|
|
133
137
|
}
|
|
134
138
|
|
|
135
|
-
abstract handleMessage(message:
|
|
139
|
+
abstract handleMessage(message: T_MessagingPlatformMessage, wrapper: DyNTS_Bot_MessageWrapper<T_MessagingPlatformMessage>, issuer: string): Promise<T_MessagingPlatformMessage>;
|
|
136
140
|
|
|
137
141
|
async getMessageIsForBotToHandle(
|
|
138
|
-
message:
|
|
142
|
+
message: T_MessagingPlatformMessage,
|
|
143
|
+
wrapper: DyNTS_Bot_MessageWrapper<T_MessagingPlatformMessage>,
|
|
139
144
|
issuer: string,
|
|
140
145
|
dontRemovePing?: boolean
|
|
141
146
|
): Promise<boolean> {
|
|
142
147
|
try {
|
|
143
148
|
const botSettings = DyNTS_global_settings.bot_settings as DyNTS_Bot_Global_Settings;
|
|
144
149
|
|
|
145
|
-
|
|
150
|
+
const provider = wrapper.provider || this.provider;
|
|
151
|
+
if (!provider || !this.mainBot_CS || !this.botClientId) {
|
|
146
152
|
DyFM_Log.H_error(
|
|
147
153
|
'🚫❌ Bot not initialized yet. END wont respond to message:', message.content,
|
|
148
154
|
new Error('Bot not initialized yet').stack
|
|
@@ -184,7 +190,8 @@ export abstract class DyNTS_Bot_IO_ControlService<
|
|
|
184
190
|
}
|
|
185
191
|
|
|
186
192
|
if (!isOwnMessage && isPinged) {
|
|
187
|
-
this.provider
|
|
193
|
+
const provider = wrapper.provider || this.provider;
|
|
194
|
+
provider.replyToMessage(
|
|
188
195
|
message.id,
|
|
189
196
|
message.channelId,
|
|
190
197
|
`[SYSTEM|REFUSE|CHANNEL] I'm sorry, but I'm not allowed to answer you in this channel!`
|
|
@@ -221,7 +228,8 @@ export abstract class DyNTS_Bot_IO_ControlService<
|
|
|
221
228
|
) {
|
|
222
229
|
if (isPinged && botSettings?.debugLevel >= 2) {
|
|
223
230
|
DyFM_Log.warn('🚫🤖❌ not for me; this message is from a bot')
|
|
224
|
-
this.provider
|
|
231
|
+
const provider = wrapper.provider || this.provider;
|
|
232
|
+
provider.replyToMessage(
|
|
225
233
|
message.id,
|
|
226
234
|
message.channelId,
|
|
227
235
|
'[SYSTEM|REFUSE|BOT] You should not ping me!'
|
|
@@ -247,7 +255,8 @@ export abstract class DyNTS_Bot_IO_ControlService<
|
|
|
247
255
|
if (!isAllowedUser) {
|
|
248
256
|
if (botSettings?.debugLevel >= 2) {
|
|
249
257
|
DyFM_Log.warn('🚫❌ not allowed user. END', message.authorName, message.authorDisplayName)
|
|
250
|
-
this.provider
|
|
258
|
+
const provider = wrapper.provider || this.provider;
|
|
259
|
+
provider.replyToMessage(
|
|
251
260
|
message.id,
|
|
252
261
|
message.channelId,
|
|
253
262
|
`[SYSTEM|REFUSE|USER] I'm sorry, but I'm not allowed to answer you!`
|
|
@@ -274,12 +283,12 @@ export abstract class DyNTS_Bot_IO_ControlService<
|
|
|
274
283
|
}
|
|
275
284
|
}
|
|
276
285
|
|
|
277
|
-
async handleIfCommand(message:
|
|
286
|
+
async handleIfCommand(message: T_MessagingPlatformMessage, wrapper: DyNTS_Bot_MessageWrapper<T_MessagingPlatformMessage>, issuer: string): Promise<boolean> {
|
|
278
287
|
try {
|
|
279
288
|
const isCommand = await this.isCommand(message, issuer);
|
|
280
289
|
|
|
281
290
|
if (isCommand) {
|
|
282
|
-
await this.commands_CS.handleCommand(message, issuer);
|
|
291
|
+
await this.commands_CS.handleCommand(message, wrapper, issuer);
|
|
283
292
|
}
|
|
284
293
|
|
|
285
294
|
return Boolean(isCommand);
|
|
@@ -291,7 +300,7 @@ export abstract class DyNTS_Bot_IO_ControlService<
|
|
|
291
300
|
}
|
|
292
301
|
}
|
|
293
302
|
|
|
294
|
-
async isCommand(message:
|
|
303
|
+
async isCommand(message: T_MessagingPlatformMessage, issuer: string): Promise<boolean> {
|
|
295
304
|
try {
|
|
296
305
|
const botSettings = DyNTS_global_settings.bot_settings as DyNTS_Bot_Global_Settings;
|
|
297
306
|
let haveCommandOperator = false;
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { DyNTS_SingletonService } from '../../../_services/base/singleton.service';
|
|
2
2
|
import { DyFM_Async, DyFM_Error, DyFM_Log } from '@futdevpro/fsm-dynamo';
|
|
3
3
|
import { DyNTS_global_settings } from '../../../_collections/global-settings.const';
|
|
4
|
-
import {
|
|
4
|
+
import { DyNTS_Bot_MessagingProvider, DyNTS_Bot_MessagingProvider_Config } from '../_models/bot-messaging-provider.interface';
|
|
5
5
|
import { DyNTS_Bot_Message } from '../_models/bot-message.interface';
|
|
6
6
|
import { DyNTS_Bot_Channel } from '../_models/bot-channel.interface';
|
|
7
7
|
import { DyNTS_Bot_User } from '../_models/bot-user.interface';
|
|
8
|
-
import { DyNTS_Bot_Global_Settings } from '../_models/bot-global-settings.interface';
|
|
8
|
+
import { DyNTS_Bot_Global_Settings, DyNTS_Bot_Settings } from '../_models/bot-global-settings.interface';
|
|
9
9
|
import { DyNTS_GlobalService } from '../../../_services/core/global.service';
|
|
10
10
|
import { DyNTS_Bot_IO_ControlService } from './bot-io.control-service';
|
|
11
11
|
import { DyNTS_Bot_Routines_ControlService } from './bot-routines.control-service';
|
|
12
|
+
import { DyNTS_Bot_MessageWrapper } from '../_models/bot-message-wrapper.interface';
|
|
13
|
+
import { DyNTS_Bot_MessagingProvider_Factory } from './bot-messaging-provider-factory.service';
|
|
12
14
|
|
|
13
15
|
/**
|
|
14
16
|
* This is the main control service for the Bot.
|
|
@@ -22,26 +24,35 @@ import { DyNTS_Bot_Routines_ControlService } from './bot-routines.control-servic
|
|
|
22
24
|
*/
|
|
23
25
|
|
|
24
26
|
export abstract class DyNTS_Bot_Main_ControlService<
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
> =
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
T_MessagingPlatformChannel extends DyNTS_Bot_Channel<any> = DyNTS_Bot_Channel<any>,
|
|
28
|
+
T_MessagingPlatformMessage extends DyNTS_Bot_Message<any> = DyNTS_Bot_Message<any>,
|
|
29
|
+
T_MessagingPlatformUser extends DyNTS_Bot_User<any> = DyNTS_Bot_User<any>,
|
|
30
|
+
T_MessagingPlatformProvider extends DyNTS_Bot_MessagingProvider<
|
|
31
|
+
T_MessagingPlatformChannel,
|
|
32
|
+
T_MessagingPlatformMessage,
|
|
33
|
+
T_MessagingPlatformUser
|
|
34
|
+
> = DyNTS_Bot_MessagingProvider<
|
|
35
|
+
T_MessagingPlatformChannel,
|
|
36
|
+
T_MessagingPlatformMessage,
|
|
37
|
+
T_MessagingPlatformUser
|
|
36
38
|
>
|
|
37
39
|
> extends DyNTS_SingletonService {
|
|
38
40
|
|
|
39
|
-
protected _provider:
|
|
41
|
+
protected _provider: T_MessagingPlatformProvider;
|
|
42
|
+
protected _providers: Map<string, T_MessagingPlatformProvider> = new Map();
|
|
40
43
|
|
|
41
|
-
get provider():
|
|
44
|
+
get provider(): T_MessagingPlatformProvider {
|
|
42
45
|
return this._provider;
|
|
43
46
|
}
|
|
44
47
|
|
|
48
|
+
get providers(): Map<string, T_MessagingPlatformProvider> {
|
|
49
|
+
return this._providers;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
getProviderById(providerId: string): T_MessagingPlatformProvider | undefined {
|
|
53
|
+
return this._providers.get(providerId);
|
|
54
|
+
}
|
|
55
|
+
|
|
45
56
|
get botClientId(): string {
|
|
46
57
|
return this.provider?.getBotId() ?? DyNTS_global_settings?.bot_settings?.discord?.clientId;
|
|
47
58
|
}
|
|
@@ -51,35 +62,35 @@ export abstract class DyNTS_Bot_Main_ControlService<
|
|
|
51
62
|
}
|
|
52
63
|
|
|
53
64
|
protected abstract getBotIOControlService(): DyNTS_Bot_IO_ControlService<
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
65
|
+
T_MessagingPlatformChannel,
|
|
66
|
+
T_MessagingPlatformMessage,
|
|
67
|
+
T_MessagingPlatformUser,
|
|
68
|
+
T_MessagingPlatformProvider
|
|
58
69
|
>;
|
|
59
70
|
protected botIO_CS: DyNTS_Bot_IO_ControlService<
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
71
|
+
T_MessagingPlatformChannel,
|
|
72
|
+
T_MessagingPlatformMessage,
|
|
73
|
+
T_MessagingPlatformUser,
|
|
74
|
+
T_MessagingPlatformProvider
|
|
64
75
|
>;
|
|
65
76
|
|
|
66
77
|
protected abstract getRoutinesControlService(): DyNTS_Bot_Routines_ControlService<
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
78
|
+
T_MessagingPlatformChannel,
|
|
79
|
+
T_MessagingPlatformMessage,
|
|
80
|
+
T_MessagingPlatformUser,
|
|
81
|
+
T_MessagingPlatformProvider
|
|
71
82
|
>;
|
|
72
83
|
protected routines_CS: DyNTS_Bot_Routines_ControlService<
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
84
|
+
T_MessagingPlatformChannel,
|
|
85
|
+
T_MessagingPlatformMessage,
|
|
86
|
+
T_MessagingPlatformUser,
|
|
87
|
+
T_MessagingPlatformProvider
|
|
77
88
|
>;
|
|
78
89
|
|
|
79
|
-
protected abstract getProvider():
|
|
90
|
+
protected abstract getProvider(): T_MessagingPlatformProvider;
|
|
80
91
|
|
|
81
92
|
private _channelsByNames: {
|
|
82
|
-
[key: string]:
|
|
93
|
+
[key: string]: T_MessagingPlatformChannel;
|
|
83
94
|
} = {};
|
|
84
95
|
|
|
85
96
|
private _rolesByNames: {
|
|
@@ -112,11 +123,39 @@ export abstract class DyNTS_Bot_Main_ControlService<
|
|
|
112
123
|
}
|
|
113
124
|
}
|
|
114
125
|
|
|
126
|
+
/**
|
|
127
|
+
* Check if the bot is configured for multiple providers
|
|
128
|
+
*/
|
|
129
|
+
protected isMultiProviderMode(): boolean {
|
|
130
|
+
const settings = DyNTS_global_settings.bot_settings as any;
|
|
131
|
+
return Array.isArray(settings?.providers) && settings.providers.length > 0;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Get all provider configurations (supports both single and multi-provider mode)
|
|
136
|
+
*/
|
|
137
|
+
protected getProviderConfigs(): DyNTS_Bot_MessagingProvider_Config[] {
|
|
138
|
+
const settings = DyNTS_global_settings.bot_settings as any;
|
|
139
|
+
|
|
140
|
+
if (this.isMultiProviderMode()) {
|
|
141
|
+
return settings.providers;
|
|
142
|
+
} else {
|
|
143
|
+
// Single provider mode - wrap existing config
|
|
144
|
+
const config = settings as DyNTS_Bot_MessagingProvider_Config;
|
|
145
|
+
if (!config.providerId) {
|
|
146
|
+
config.providerId = config.messageProvider || 'default';
|
|
147
|
+
}
|
|
148
|
+
return [config];
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
115
152
|
async setup(issuer: string): Promise<void> {
|
|
116
153
|
try {
|
|
117
154
|
await DyFM_Async.delay(100);
|
|
118
155
|
|
|
119
|
-
|
|
156
|
+
const configs = this.getProviderConfigs();
|
|
157
|
+
|
|
158
|
+
if (configs.length === 0) {
|
|
120
159
|
throw new Error(
|
|
121
160
|
`No bot provider configured!` +
|
|
122
161
|
`\nPlease set the provider in DyNTS_global_settings.bot_settings.provider` +
|
|
@@ -124,6 +163,13 @@ export abstract class DyNTS_Bot_Main_ControlService<
|
|
|
124
163
|
);
|
|
125
164
|
}
|
|
126
165
|
|
|
166
|
+
// If multi-provider mode, initialize all providers
|
|
167
|
+
if (this.isMultiProviderMode()) {
|
|
168
|
+
await this.setupMultipleProviders(configs, issuer);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Single provider mode (backward compatible)
|
|
127
173
|
if (!this.provider) {
|
|
128
174
|
throw new Error(
|
|
129
175
|
`No bot provider instance found!` +
|
|
@@ -163,9 +209,16 @@ export abstract class DyNTS_Bot_Main_ControlService<
|
|
|
163
209
|
DyFM_Log.success('Ready event registered');
|
|
164
210
|
}
|
|
165
211
|
|
|
166
|
-
this.provider.onMessage((message:
|
|
212
|
+
this.provider.onMessage((message: T_MessagingPlatformMessage, messageIssuer: string) => {
|
|
167
213
|
try {
|
|
168
|
-
|
|
214
|
+
const wrapper: DyNTS_Bot_MessageWrapper<T_MessagingPlatformMessage> = {
|
|
215
|
+
message: message,
|
|
216
|
+
providerId: 'default',
|
|
217
|
+
providerType: this.provider.getProviderName() as any,
|
|
218
|
+
provider: this.provider
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
this.botIO_CS.handleNewMessage(wrapper, messageIssuer)
|
|
169
222
|
} catch (error) {
|
|
170
223
|
DyFM_Error.logSimple('Error handling new message:', error);
|
|
171
224
|
}
|
|
@@ -228,6 +281,85 @@ export abstract class DyNTS_Bot_Main_ControlService<
|
|
|
228
281
|
}
|
|
229
282
|
}
|
|
230
283
|
|
|
284
|
+
private async setupMultipleProviders(
|
|
285
|
+
configs: DyNTS_Bot_MessagingProvider_Config[],
|
|
286
|
+
issuer: string
|
|
287
|
+
): Promise<void> {
|
|
288
|
+
const providers = DyNTS_Bot_MessagingProvider_Factory.createProviders(configs);
|
|
289
|
+
this._providers = providers as Map<string, T_MessagingPlatformProvider>;
|
|
290
|
+
|
|
291
|
+
const setupPromises = Array.from(providers.entries()).map(([providerId, provider]) => {
|
|
292
|
+
return new Promise<void>((resolve, reject) => {
|
|
293
|
+
provider.onError((error) => {
|
|
294
|
+
if (DyNTS_global_settings.bot_settings?.debugLevel >= 1) {
|
|
295
|
+
DyFM_Error.logSimple(`Bot provider error [${providerId}]:`, error);
|
|
296
|
+
}
|
|
297
|
+
DyNTS_GlobalService.globalErrorHandler(error);
|
|
298
|
+
reject(error);
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
provider.onReady(async () => {
|
|
302
|
+
if (DyNTS_global_settings.bot_settings?.debugLevel >= 1) {
|
|
303
|
+
DyFM_Log.success(`Bot logged in as ${provider.getBotDisplayName()} [${providerId}]`);
|
|
304
|
+
}
|
|
305
|
+
resolve();
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
provider.onMessage((message, messageIssuer, msgProviderId) => {
|
|
309
|
+
try {
|
|
310
|
+
const wrapper: DyNTS_Bot_MessageWrapper<T_MessagingPlatformMessage> = {
|
|
311
|
+
message: message as T_MessagingPlatformMessage,
|
|
312
|
+
providerId: msgProviderId || provider.getProviderId() || providerId,
|
|
313
|
+
providerType: provider.getProviderName() as any,
|
|
314
|
+
provider: provider as any
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
this.botIO_CS.handleNewMessage(wrapper, messageIssuer)
|
|
318
|
+
} catch (error) {
|
|
319
|
+
DyFM_Error.logSimple('Error handling new message:', error);
|
|
320
|
+
}
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
const config = configs.find(c => c.providerId === providerId);
|
|
324
|
+
if (!config) {
|
|
325
|
+
reject(new Error(`No config found for provider ${providerId}`));
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
provider.initialize(config).then(() => {
|
|
330
|
+
const token = this.getTokenForProviderConfig(config);
|
|
331
|
+
return provider.login(token);
|
|
332
|
+
}).catch((error) => {
|
|
333
|
+
reject(error);
|
|
334
|
+
});
|
|
335
|
+
});
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
await Promise.all(setupPromises);
|
|
339
|
+
|
|
340
|
+
// Set default provider (first one) for backward compatibility
|
|
341
|
+
if (this._provider) {
|
|
342
|
+
this._provider = providers.values().next().value;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
await this.start(issuer);
|
|
346
|
+
|
|
347
|
+
DyFM_Log.success('All bot providers setup complete');
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
private getTokenForProviderConfig(config: DyNTS_Bot_MessagingProvider_Config): string {
|
|
351
|
+
switch (config.messageProvider) {
|
|
352
|
+
case 'discord':
|
|
353
|
+
return config.discord?.token;
|
|
354
|
+
case 'slack':
|
|
355
|
+
return config.slack?.token;
|
|
356
|
+
case 'teams':
|
|
357
|
+
return config.teams?.appPassword;
|
|
358
|
+
default:
|
|
359
|
+
throw new Error(`Unsupported provider: ${config.messageProvider}`);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
|
|
231
363
|
async start(issuer: string): Promise<void> {
|
|
232
364
|
try {
|
|
233
365
|
this.botIO_CS = this.getBotIOControlService();
|
|
@@ -267,7 +399,7 @@ export abstract class DyNTS_Bot_Main_ControlService<
|
|
|
267
399
|
return this._rolesByNames[roleName];
|
|
268
400
|
}
|
|
269
401
|
|
|
270
|
-
async getChannelByName(channelName: string): Promise<
|
|
402
|
+
async getChannelByName(channelName: string): Promise<T_MessagingPlatformChannel> {
|
|
271
403
|
if (!this._channelsByNames[channelName]) {
|
|
272
404
|
this._channelsByNames[channelName] = await this.provider.getChannelByName(channelName);
|
|
273
405
|
}
|
|
@@ -279,7 +411,7 @@ export abstract class DyNTS_Bot_Main_ControlService<
|
|
|
279
411
|
channelName: string,
|
|
280
412
|
message: string,
|
|
281
413
|
issuer: string,
|
|
282
|
-
): Promise<
|
|
414
|
+
): Promise<T_MessagingPlatformMessage> {
|
|
283
415
|
try {
|
|
284
416
|
const channel = await this.getChannelByName(channelName);
|
|
285
417
|
|
|
@@ -317,7 +449,7 @@ export abstract class DyNTS_Bot_Main_ControlService<
|
|
|
317
449
|
}
|
|
318
450
|
|
|
319
451
|
async clearChannel(
|
|
320
|
-
channel:
|
|
452
|
+
channel: T_MessagingPlatformChannel,
|
|
321
453
|
issuer: string,
|
|
322
454
|
): Promise<void> {
|
|
323
455
|
try {
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { DyNTS_Bot_MessagingProvider, DyNTS_Bot_MessagingProvider_Config } from '../_models/bot-messaging-provider.interface';
|
|
2
|
+
import { DyNTS_Bot_MessageProvider_Type } from '../_enums/bot-message-provider.enum';
|
|
3
|
+
import { DyNTS_DiB_MessagingProvider } from '../_modules/discord-bot/_services/dib-messaging-provider.service';
|
|
4
|
+
import { DyNTS_SlB_MessagingProvider } from '../_modules/slack-bot/_services/slb-messaging-provider.service';
|
|
5
|
+
import { DyNTS_TeB_MessagingProvider } from '../_modules/teams-bot/_services/teb-messaging-provider.service';
|
|
6
|
+
import { DyNTS_DyB_MessagingProvider } from '../_modules/dynamo-bot/_services/dyb-messaging-provider.service';
|
|
7
|
+
|
|
8
|
+
export class DyNTS_Bot_MessagingProvider_Factory {
|
|
9
|
+
|
|
10
|
+
static createProvider(config: DyNTS_Bot_MessagingProvider_Config): DyNTS_Bot_MessagingProvider {
|
|
11
|
+
switch (config.messageProvider) {
|
|
12
|
+
case DyNTS_Bot_MessageProvider_Type.discord:
|
|
13
|
+
return new DyNTS_DiB_MessagingProvider();
|
|
14
|
+
|
|
15
|
+
case DyNTS_Bot_MessageProvider_Type.slack:
|
|
16
|
+
return new DyNTS_SlB_MessagingProvider();
|
|
17
|
+
|
|
18
|
+
case DyNTS_Bot_MessageProvider_Type.teams:
|
|
19
|
+
return new DyNTS_TeB_MessagingProvider();
|
|
20
|
+
|
|
21
|
+
case DyNTS_Bot_MessageProvider_Type.dynamo:
|
|
22
|
+
return new DyNTS_DyB_MessagingProvider();
|
|
23
|
+
|
|
24
|
+
case DyNTS_Bot_MessageProvider_Type.custom:
|
|
25
|
+
if (!config.messageProviderInstance) {
|
|
26
|
+
throw new Error('Custom provider instance is required when provider type is "custom"');
|
|
27
|
+
}
|
|
28
|
+
return config.messageProviderInstance;
|
|
29
|
+
|
|
30
|
+
default:
|
|
31
|
+
throw new Error(`Unsupported provider type: ${config.messageProvider}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
static createProviders(configs: DyNTS_Bot_MessagingProvider_Config[]): Map<string, DyNTS_Bot_MessagingProvider> {
|
|
36
|
+
const providers = new Map<string, DyNTS_Bot_MessagingProvider>();
|
|
37
|
+
const providerIds = new Set<string>();
|
|
38
|
+
|
|
39
|
+
for (const config of configs) {
|
|
40
|
+
if (!config.providerId) {
|
|
41
|
+
throw new Error('providerId is required when using multiple providers');
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (providerIds.has(config.providerId)) {
|
|
45
|
+
throw new Error(`Duplicate providerId detected: ${config.providerId}`);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
providerIds.add(config.providerId);
|
|
49
|
+
|
|
50
|
+
const provider = this.createProvider(config);
|
|
51
|
+
providers.set(config.providerId, provider);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return providers;
|
|
55
|
+
}
|
|
56
|
+
}
|