@futdevpro/nts-dynamo 1.14.29 → 1.14.31
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/_modules/open-ai/_services/oai-llm.service-base.d.ts +0 -3
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.d.ts.map +1 -1
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.js +20 -15
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.js.map +1 -1
- package/build/_modules/ai/_services/ai-llm.service-base.d.ts +0 -2
- package/build/_modules/ai/_services/ai-llm.service-base.d.ts.map +1 -1
- package/build/_modules/ai/_services/ai-provider.service-base.d.ts +2 -1
- package/build/_modules/ai/_services/ai-provider.service-base.d.ts.map +1 -1
- package/build/_modules/ai/_services/ai-provider.service-base.js +2 -1
- package/build/_modules/ai/_services/ai-provider.service-base.js.map +1 -1
- package/build/_modules/assistant/_collections/ass.util.d.ts +2 -2
- package/build/_modules/assistant/_collections/ass.util.d.ts.map +1 -1
- package/build/_modules/assistant/_services/ass-io.control-service.d.ts +5 -9
- package/build/_modules/assistant/_services/ass-io.control-service.d.ts.map +1 -1
- package/build/_modules/assistant/_services/ass-io.control-service.js +9 -10
- package/build/_modules/assistant/_services/ass-io.control-service.js.map +1 -1
- package/build/_modules/assistant/_services/ass-main.control-service.d.ts +26 -10
- package/build/_modules/assistant/_services/ass-main.control-service.d.ts.map +1 -1
- package/build/_modules/assistant/_services/ass-main.control-service.js +49 -4
- package/build/_modules/assistant/_services/ass-main.control-service.js.map +1 -1
- package/build/_modules/assistant/index.d.ts +1 -1
- package/build/_modules/assistant/index.d.ts.map +1 -1
- package/build/_modules/assistant/index.js +1 -1
- package/build/_modules/assistant/index.js.map +1 -1
- package/build/_modules/bot/_models/bot-channel-wrapper.interface.d.ts +17 -0
- package/build/_modules/bot/_models/bot-channel-wrapper.interface.d.ts.map +1 -0
- package/build/_modules/bot/_models/{bot-message.interface.js → bot-channel-wrapper.interface.js} +1 -1
- package/build/_modules/bot/_models/bot-channel-wrapper.interface.js.map +1 -0
- package/build/_modules/bot/_models/bot-command.interface.d.ts +2 -2
- package/build/_modules/bot/_models/bot-command.interface.d.ts.map +1 -1
- package/build/_modules/bot/_models/bot-global-settings.interface.d.ts +1 -1
- 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 +16 -13
- package/build/_modules/bot/_models/bot-message-wrapper.interface.d.ts.map +1 -1
- package/build/_modules/bot/_models/bot-user-wrapper.interface.d.ts +17 -0
- package/build/_modules/bot/_models/bot-user-wrapper.interface.d.ts.map +1 -0
- package/build/_modules/bot/_models/{bot-channel.interface.js → bot-user-wrapper.interface.js} +1 -1
- package/build/_modules/bot/_models/bot-user-wrapper.interface.js.map +1 -0
- package/build/_modules/bot/_modules/discord-bot/_models/dib-platform.types.d.ts +0 -7
- package/build/_modules/bot/_modules/discord-bot/_models/dib-platform.types.d.ts.map +1 -1
- package/build/_modules/bot/_modules/discord-bot/_models/dib-platform.types.js +10 -2
- package/build/_modules/bot/_modules/discord-bot/_models/dib-platform.types.js.map +1 -1
- package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.d.ts +67 -0
- package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.d.ts.map +1 -0
- package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.js +391 -0
- package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.js.map +1 -0
- package/build/_modules/bot/_modules/discord-bot/index.d.ts +1 -4
- package/build/_modules/bot/_modules/discord-bot/index.d.ts.map +1 -1
- package/build/_modules/bot/_modules/discord-bot/index.js +2 -5
- 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 +2 -2
- package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.js.map +1 -1
- package/build/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.d.ts +6 -6
- package/build/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.d.ts.map +1 -1
- package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.d.ts +59 -0
- package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.d.ts.map +1 -0
- package/build/_modules/bot/_modules/dynamo-bot/_services/{dyb-messaging-provider.service.js → dyb-messaging-provider.control-service.js} +130 -108
- package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.js.map +1 -0
- package/build/_modules/bot/_modules/dynamo-bot/index.d.ts +1 -2
- package/build/_modules/bot/_modules/dynamo-bot/index.d.ts.map +1 -1
- package/build/_modules/bot/_modules/dynamo-bot/index.js +1 -2
- package/build/_modules/bot/_modules/dynamo-bot/index.js.map +1 -1
- package/build/_modules/bot/_modules/slack-bot/_models/slb-platform.types.d.ts +6 -6
- package/build/_modules/bot/_modules/slack-bot/_models/slb-platform.types.d.ts.map +1 -1
- package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.d.ts +55 -0
- package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.d.ts.map +1 -0
- package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.js +132 -0
- package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.js.map +1 -0
- package/build/_modules/bot/_modules/slack-bot/index.d.ts +1 -2
- package/build/_modules/bot/_modules/slack-bot/index.d.ts.map +1 -1
- package/build/_modules/bot/_modules/slack-bot/index.js +1 -3
- package/build/_modules/bot/_modules/slack-bot/index.js.map +1 -1
- package/build/_modules/bot/_modules/teams-bot/_models/teb-platform.types.d.ts +6 -6
- package/build/_modules/bot/_modules/teams-bot/_models/teb-platform.types.d.ts.map +1 -1
- package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.d.ts +55 -0
- package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.d.ts.map +1 -0
- package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.js +132 -0
- package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.js.map +1 -0
- package/build/_modules/bot/_modules/teams-bot/index.d.ts +1 -2
- package/build/_modules/bot/_modules/teams-bot/index.d.ts.map +1 -1
- package/build/_modules/bot/_modules/teams-bot/index.js +1 -3
- package/build/_modules/bot/_modules/teams-bot/index.js.map +1 -1
- package/build/_modules/bot/_services/bot-commands.control-service.d.ts +8 -11
- package/build/_modules/bot/_services/bot-commands.control-service.d.ts.map +1 -1
- package/build/_modules/bot/_services/bot-commands.control-service.js +60 -15
- package/build/_modules/bot/_services/bot-commands.control-service.js.map +1 -1
- package/build/_modules/bot/_services/bot-io.control-service.d.ts +16 -17
- package/build/_modules/bot/_services/bot-io.control-service.d.ts.map +1 -1
- package/build/_modules/bot/_services/bot-io.control-service.js +60 -51
- package/build/_modules/bot/_services/bot-io.control-service.js.map +1 -1
- package/build/_modules/bot/_services/bot-main.control-service.d.ts +17 -37
- package/build/_modules/bot/_services/bot-main.control-service.d.ts.map +1 -1
- package/build/_modules/bot/_services/bot-main.control-service.js +107 -263
- package/build/_modules/bot/_services/bot-main.control-service.js.map +1 -1
- package/build/_modules/bot/_services/bot-messaging-provider.service-base.d.ts +70 -0
- package/build/_modules/bot/_services/bot-messaging-provider.service-base.d.ts.map +1 -0
- package/build/_modules/bot/_services/bot-messaging-provider.service-base.js +16 -0
- package/build/_modules/bot/_services/bot-messaging-provider.service-base.js.map +1 -0
- package/build/_modules/bot/_services/bot-routines.control-service.d.ts +6 -9
- package/build/_modules/bot/_services/bot-routines.control-service.d.ts.map +1 -1
- package/build/_modules/bot/_services/bot-routines.control-service.js +29 -9
- package/build/_modules/bot/_services/bot-routines.control-service.js.map +1 -1
- package/build/_modules/bot/index.d.ts +3 -7
- package/build/_modules/bot/index.d.ts.map +1 -1
- package/build/_modules/bot/index.js +9 -7
- package/build/_modules/bot/index.js.map +1 -1
- package/build/_modules/messaging/_collections/msg-global-settings.const.d.ts.map +1 -1
- package/build/_modules/messaging/_collections/msg-global-settings.const.js +0 -5
- package/build/_modules/messaging/_collections/msg-global-settings.const.js.map +1 -1
- package/build/_modules/messaging/_collections/msg.util.d.ts +2 -2
- package/build/_modules/messaging/_collections/msg.util.d.ts.map +1 -1
- package/build/_modules/messaging/_collections/msg.util.js.map +1 -1
- package/build/_modules/messaging/_models/msg-global-settings.interface.d.ts +0 -9
- package/build/_modules/messaging/_models/msg-global-settings.interface.d.ts.map +1 -1
- package/build/_modules/messaging/_services/msg-integration.control-service.d.ts +0 -25
- package/build/_modules/messaging/_services/msg-integration.control-service.d.ts.map +1 -1
- package/build/_modules/messaging/_services/msg-integration.control-service.js +180 -125
- package/build/_modules/messaging/_services/msg-integration.control-service.js.map +1 -1
- package/build/_modules/messaging/index.d.ts +0 -1
- package/build/_modules/messaging/index.d.ts.map +1 -1
- package/build/_modules/messaging/index.js +1 -1
- package/build/_modules/messaging/index.js.map +1 -1
- package/package.json +1 -1
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts +4 -4
- package/src/_modules/ai/_services/ai-llm.service-base.ts +2 -2
- package/src/_modules/ai/_services/ai-provider.service-base.ts +2 -1
- package/src/_modules/assistant/_collections/ass.util.ts +2 -2
- package/src/_modules/assistant/_services/ass-io.control-service.ts +17 -48
- package/src/_modules/assistant/_services/ass-main.control-service.ts +83 -32
- package/src/_modules/assistant/index.ts +1 -1
- package/src/_modules/bot/_models/bot-channel-wrapper.interface.ts +24 -0
- package/src/_modules/bot/_models/bot-command.interface.ts +2 -2
- package/src/_modules/bot/_models/bot-global-settings.interface.ts +1 -1
- package/src/_modules/bot/_models/bot-message-wrapper.interface.ts +18 -18
- package/src/_modules/bot/_models/bot-user-wrapper.interface.ts +35 -0
- package/src/_modules/bot/_modules/discord-bot/_models/dib-platform.types.ts +8 -7
- package/src/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.ts +521 -0
- package/src/_modules/bot/_modules/discord-bot/index.ts +2 -5
- package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.ts +8 -5
- package/src/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.ts +6 -6
- package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts +431 -0
- package/src/_modules/bot/_modules/dynamo-bot/index.ts +1 -2
- package/src/_modules/bot/_modules/slack-bot/_models/slb-platform.types.ts +6 -6
- package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts +186 -0
- package/src/_modules/bot/_modules/slack-bot/index.ts +1 -3
- package/src/_modules/bot/_modules/teams-bot/_models/teb-platform.types.ts +6 -6
- package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.ts +186 -0
- package/src/_modules/bot/_modules/teams-bot/index.ts +1 -4
- package/src/_modules/bot/_services/bot-commands.control-service.ts +64 -34
- package/src/_modules/bot/_services/bot-io.control-service.ts +86 -95
- package/src/_modules/bot/_services/bot-main.control-service.ts +249 -240
- package/src/_modules/bot/_services/bot-messaging-provider.service-base.ts +152 -0
- package/src/_modules/bot/_services/bot-routines.control-service.ts +39 -44
- package/src/_modules/bot/index.ts +9 -7
- package/src/_modules/messaging/README.md +2 -7
- package/src/_modules/messaging/_collections/msg-global-settings.const.ts +0 -6
- package/src/_modules/messaging/_collections/msg.util.ts +2 -2
- package/src/_modules/messaging/_models/msg-global-settings.interface.ts +0 -12
- package/src/_modules/messaging/_services/msg-integration.control-service.ts +180 -179
- package/src/_modules/messaging/index.ts +1 -1
- package/build/_modules/ai/_modules/open-ai/_services/oai-doc-chunk-data.service.d.ts +0 -22
- package/build/_modules/ai/_modules/open-ai/_services/oai-doc-chunk-data.service.d.ts.map +0 -1
- package/build/_modules/ai/_modules/open-ai/_services/oai-doc-chunk-data.service.js +0 -187
- package/build/_modules/ai/_modules/open-ai/_services/oai-doc-chunk-data.service.js.map +0 -1
- package/build/_modules/ai/_modules/open-ai/_services/oai-doc-page.data-service.d.ts +0 -27
- package/build/_modules/ai/_modules/open-ai/_services/oai-doc-page.data-service.d.ts.map +0 -1
- package/build/_modules/ai/_modules/open-ai/_services/oai-doc-page.data-service.js +0 -277
- package/build/_modules/ai/_modules/open-ai/_services/oai-doc-page.data-service.js.map +0 -1
- package/build/_modules/ai/_modules/open-ai/_services/oai-document.data-service.d.ts +0 -23
- package/build/_modules/ai/_modules/open-ai/_services/oai-document.data-service.d.ts.map +0 -1
- package/build/_modules/ai/_modules/open-ai/_services/oai-document.data-service.js +0 -319
- package/build/_modules/ai/_modules/open-ai/_services/oai-document.data-service.js.map +0 -1
- package/build/_modules/ai/_modules/open-ai/_services/oai-vector-data.service.d.ts +0 -118
- package/build/_modules/ai/_modules/open-ai/_services/oai-vector-data.service.d.ts.map +0 -1
- package/build/_modules/ai/_modules/open-ai/_services/oai-vector-data.service.js +0 -460
- package/build/_modules/ai/_modules/open-ai/_services/oai-vector-data.service.js.map +0 -1
- package/build/_modules/assistant/_services/ass.service-base.d.ts +0 -33
- package/build/_modules/assistant/_services/ass.service-base.d.ts.map +0 -1
- package/build/_modules/assistant/_services/ass.service-base.js +0 -58
- package/build/_modules/assistant/_services/ass.service-base.js.map +0 -1
- package/build/_modules/bot/_collections/bot-operations.util.d.ts +0 -21
- package/build/_modules/bot/_collections/bot-operations.util.d.ts.map +0 -1
- package/build/_modules/bot/_collections/bot-operations.util.js +0 -74
- package/build/_modules/bot/_collections/bot-operations.util.js.map +0 -1
- package/build/_modules/bot/_models/bot-channel.interface.d.ts +0 -8
- package/build/_modules/bot/_models/bot-channel.interface.d.ts.map +0 -1
- package/build/_modules/bot/_models/bot-channel.interface.js.map +0 -1
- package/build/_modules/bot/_models/bot-message.interface.d.ts +0 -15
- package/build/_modules/bot/_models/bot-message.interface.d.ts.map +0 -1
- package/build/_modules/bot/_models/bot-message.interface.js.map +0 -1
- package/build/_modules/bot/_models/bot-messaging-provider.interface.d.ts +0 -68
- package/build/_modules/bot/_models/bot-messaging-provider.interface.d.ts.map +0 -1
- package/build/_modules/bot/_models/bot-messaging-provider.interface.js +0 -3
- package/build/_modules/bot/_models/bot-messaging-provider.interface.js.map +0 -1
- package/build/_modules/bot/_models/bot-user.interface.d.ts +0 -8
- package/build/_modules/bot/_models/bot-user.interface.d.ts.map +0 -1
- package/build/_modules/bot/_models/bot-user.interface.js +0 -3
- package/build/_modules/bot/_models/bot-user.interface.js.map +0 -1
- package/build/_modules/bot/_modules/discord-bot/_collections/dib-operations.util.d.ts +0 -11
- package/build/_modules/bot/_modules/discord-bot/_collections/dib-operations.util.d.ts.map +0 -1
- package/build/_modules/bot/_modules/discord-bot/_collections/dib-operations.util.js +0 -13
- package/build/_modules/bot/_modules/discord-bot/_collections/dib-operations.util.js.map +0 -1
- package/build/_modules/bot/_modules/discord-bot/_collections/dib.util.d.ts +0 -5
- package/build/_modules/bot/_modules/discord-bot/_collections/dib.util.d.ts.map +0 -1
- package/build/_modules/bot/_modules/discord-bot/_collections/dib.util.js +0 -19
- package/build/_modules/bot/_modules/discord-bot/_collections/dib.util.js.map +0 -1
- package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.service.d.ts +0 -56
- package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.service.d.ts.map +0 -1
- package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.service.js +0 -379
- package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.service.js.map +0 -1
- package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb.util.d.ts +0 -5
- package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb.util.d.ts.map +0 -1
- package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb.util.js +0 -26
- package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb.util.js.map +0 -1
- package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.service.d.ts +0 -55
- package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.service.d.ts.map +0 -1
- package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.service.js.map +0 -1
- package/build/_modules/bot/_modules/slack-bot/_collections/slb-operations.util.d.ts +0 -11
- package/build/_modules/bot/_modules/slack-bot/_collections/slb-operations.util.d.ts.map +0 -1
- package/build/_modules/bot/_modules/slack-bot/_collections/slb-operations.util.js +0 -13
- package/build/_modules/bot/_modules/slack-bot/_collections/slb-operations.util.js.map +0 -1
- package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.service.d.ts +0 -41
- package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.service.d.ts.map +0 -1
- package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.service.js +0 -119
- package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.service.js.map +0 -1
- package/build/_modules/bot/_modules/teams-bot/_collections/teb-operations.util.d.ts +0 -11
- package/build/_modules/bot/_modules/teams-bot/_collections/teb-operations.util.d.ts.map +0 -1
- package/build/_modules/bot/_modules/teams-bot/_collections/teb-operations.util.js +0 -13
- package/build/_modules/bot/_modules/teams-bot/_collections/teb-operations.util.js.map +0 -1
- package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.service.d.ts +0 -41
- package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.service.d.ts.map +0 -1
- package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.service.js +0 -119
- package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.service.js.map +0 -1
- package/build/_modules/bot/_services/bot-messaging-provider-factory.service.d.ts +0 -6
- package/build/_modules/bot/_services/bot-messaging-provider-factory.service.d.ts.map +0 -1
- package/build/_modules/bot/_services/bot-messaging-provider-factory.service.js +0 -47
- package/build/_modules/bot/_services/bot-messaging-provider-factory.service.js.map +0 -1
- package/src/_modules/assistant/_services/ass.service-base.ts +0 -100
- package/src/_modules/bot/_collections/bot-operations.util.ts +0 -149
- package/src/_modules/bot/_models/bot-channel.interface.ts +0 -7
- package/src/_modules/bot/_models/bot-message.interface.ts +0 -14
- package/src/_modules/bot/_models/bot-messaging-provider.interface.ts +0 -88
- package/src/_modules/bot/_models/bot-user.interface.ts +0 -7
- package/src/_modules/bot/_modules/discord-bot/_collections/dib-operations.util.ts +0 -18
- package/src/_modules/bot/_modules/discord-bot/_collections/dib.util.ts +0 -20
- package/src/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.service.ts +0 -475
- package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb.util.ts +0 -26
- package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.service.ts +0 -403
- package/src/_modules/bot/_modules/slack-bot/_collections/slb-operations.util.ts +0 -18
- package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.service.ts +0 -156
- package/src/_modules/bot/_modules/teams-bot/_collections/teb-operations.util.ts +0 -18
- package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.service.ts +0 -156
- package/src/_modules/bot/_services/bot-messaging-provider-factory.service.ts +0 -56
package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts
ADDED
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
import { DyFM_AnyError, DyFM_Error, DyFM_Log, week } from '@futdevpro/fsm-dynamo';
|
|
2
|
+
import { DyNTS_Bot_MessagingProvider_ServiceBase, DyNTS_Bot_MessagingProvider_Config } from '../../../_services/bot-messaging-provider.service-base';
|
|
3
|
+
import { DyNTS_Bot_ChannelWrapper } from '../../../_models/bot-channel-wrapper.interface';
|
|
4
|
+
import { DyNTS_Bot_LastMessageDate } from '../../../_models/bot-last-message-date.interface';
|
|
5
|
+
import { DyNTS_Bot_LastMentionDate } from '../../../_models/bot-last-mention-date.interface';
|
|
6
|
+
import { DyNTS_Bot_MessagingProvider_Type } from '../../../_enums/bot-message-provider.enum';
|
|
7
|
+
import { DyNTS_Bot_MessageWrapper } from '../../../_models/bot-message-wrapper.interface';
|
|
8
|
+
import { DyNTS_Bot_UserWrapper } from '../../../_models/bot-user-wrapper.interface';
|
|
9
|
+
import { DyNTS_DyB_Message, DyNTS_DyB_Channel, DyNTS_DyB_User } from '../_models/dyb-platform.types';
|
|
10
|
+
import { DyNTS_global_settings } from '../../../../../_collections/global-settings.const';
|
|
11
|
+
import { DyNTS_Msg_Main_ControlService } from '../../../../messaging/_services/msg-main.control-service';
|
|
12
|
+
import { DyNTS_Msg_Message_DataService } from '../../../../messaging/_services/msg-message.data-service';
|
|
13
|
+
import { DyNTS_Msg_Conversation_DataService } from '../../../../messaging/_services/msg-conversation.data-service';
|
|
14
|
+
import { DyNTS_Msg_Events_Service } from '../../../../messaging/_services/msg-events.service';
|
|
15
|
+
import { DyFM_Msg_Conversation, DyFM_Msg_EventKey, DyFM_Msg_Message, DyFM_Msg_Participant } from '@futdevpro/fsm-dynamo/messaging';
|
|
16
|
+
|
|
17
|
+
export interface Dynamo_MessagingProviderConfig extends DyNTS_Bot_MessagingProvider_Config {
|
|
18
|
+
botUserId?: string;
|
|
19
|
+
botDisplayName?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export class DyNTS_DyB_MessagingProvider_ControlService extends DyNTS_Bot_MessagingProvider_ServiceBase<
|
|
23
|
+
DyFM_Msg_Conversation,
|
|
24
|
+
DyFM_Msg_Message,
|
|
25
|
+
DyFM_Msg_Participant,
|
|
26
|
+
Dynamo_MessagingProviderConfig,
|
|
27
|
+
any
|
|
28
|
+
> {
|
|
29
|
+
readonly name = 'dynamo';
|
|
30
|
+
readonly type = DyNTS_Bot_MessagingProvider_Type.dynamo;
|
|
31
|
+
|
|
32
|
+
get botId(): string {
|
|
33
|
+
return this.config.botUserId || 'dynamo-bot';
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
get botDisplayName(): string {
|
|
37
|
+
return this.config.botDisplayName || 'Dynamo Bot';
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
readonly config: Dynamo_MessagingProviderConfig;
|
|
41
|
+
|
|
42
|
+
/* protected override readonly channelCache: Map<string, DyFM_Msg_Conversation> = new Map();
|
|
43
|
+
protected override readonly roleCache: Map<string, any> = new Map(); */
|
|
44
|
+
|
|
45
|
+
// Services
|
|
46
|
+
private messagingService: DyNTS_Msg_Main_ControlService;
|
|
47
|
+
private eventsService: DyNTS_Msg_Events_Service;
|
|
48
|
+
|
|
49
|
+
constructor(setConfig: Dynamo_MessagingProviderConfig) {
|
|
50
|
+
super();
|
|
51
|
+
this.config = setConfig;
|
|
52
|
+
this.messagingService = DyNTS_Msg_Main_ControlService.getInstance();
|
|
53
|
+
this.eventsService = DyNTS_Msg_Events_Service.getInstance();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
async setup(issuer: string): Promise<void> {
|
|
57
|
+
try {
|
|
58
|
+
DyFM_Log.success('Dynamo bot provider setup completed');
|
|
59
|
+
} catch (error) {
|
|
60
|
+
DyFM_Error.logSimple('Error during Dynamo bot setup:', error);
|
|
61
|
+
|
|
62
|
+
throw new DyFM_Error({
|
|
63
|
+
...this.getDefaultErrorSettings('setup', error, issuer),
|
|
64
|
+
errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-DyB-MessagingProvider-S000`,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
async start(issuer: string): Promise<void> {
|
|
70
|
+
try {
|
|
71
|
+
// Setup event listeners for messaging events
|
|
72
|
+
this.setupEventListeners();
|
|
73
|
+
DyFM_Log.success('Dynamo bot provider started');
|
|
74
|
+
} catch (error) {
|
|
75
|
+
DyFM_Error.logSimple('Error during Dynamo bot start:', error);
|
|
76
|
+
|
|
77
|
+
throw new DyFM_Error({
|
|
78
|
+
...this.getDefaultErrorSettings('start', error, issuer),
|
|
79
|
+
errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-DyB-MessagingProvider-S001`,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
private setupEventListeners(): void {
|
|
85
|
+
// Listen to messaging events and convert them to bot events
|
|
86
|
+
// Note: This would require extending the events service to support custom listeners
|
|
87
|
+
// For now, we'll implement a basic approach
|
|
88
|
+
DyFM_Log.info('Dynamo bot event listeners setup (messaging integration)');
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Channel operations
|
|
92
|
+
async getChannelByName(name: string): Promise<DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation>> {
|
|
93
|
+
if (this.channelCache.has(name)) {
|
|
94
|
+
return this.wrapChannel(this.channelCache.get(name));
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const conversationService: DyNTS_Msg_Conversation_DataService = new DyNTS_Msg_Conversation_DataService({
|
|
98
|
+
issuer: 'dynamo-bot',
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
// Try to find conversation by name or platformChannelId
|
|
102
|
+
const conversation: DyFM_Msg_Conversation = await conversationService.dataDBService.findOne({
|
|
103
|
+
$or: [
|
|
104
|
+
{ name: name },
|
|
105
|
+
{ platformChannelId: name }
|
|
106
|
+
],
|
|
107
|
+
__deleted: { $exists: false }
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
if (!conversation) {
|
|
111
|
+
throw new Error(`No conversation found with name "${name}"`);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
this.channelCache.set(name, conversation);
|
|
115
|
+
return this.wrapChannel(conversation);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
async getChannelById(id: string): Promise<DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation>> {
|
|
119
|
+
if (this.channelCache.has(id)) {
|
|
120
|
+
return this.wrapChannel(this.channelCache.get(id));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const conversationService: DyNTS_Msg_Conversation_DataService = new DyNTS_Msg_Conversation_DataService({
|
|
124
|
+
issuer: 'dynamo-bot',
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
const conversation: DyFM_Msg_Conversation = await conversationService.dataDBService.findOne({
|
|
128
|
+
_id: id,
|
|
129
|
+
__deleted: { $exists: false }
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
if (!conversation) {
|
|
133
|
+
throw new Error(`No conversation found with ID "${id}"`);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
this.channelCache.set(id, conversation);
|
|
137
|
+
return this.wrapChannel(conversation);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
async sendMessageToChannelByName(channelName: string, message: string, issuer: string): Promise<DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>> {
|
|
141
|
+
const channel: DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation> = await this.getChannelByName(channelName);
|
|
142
|
+
return this.sendMessage(channel, message);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
async getMessagesFromChannelByChannelName(channelName: string, limit: number = 100): Promise<DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>[]> {
|
|
146
|
+
const channel: DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation> = await this.getChannelByName(channelName);
|
|
147
|
+
return this.fetchMessages(channel, limit);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
async getLastMessageInChannel(channelName: string): Promise<DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>> {
|
|
151
|
+
const channel: DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation> = await this.getChannelByName(channelName);
|
|
152
|
+
const messages: DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>[] = await this.fetchMessages(channel, 1);
|
|
153
|
+
return messages.length > 0 ? messages[0] : null;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
async clearChannel(channelWrapper: DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation>): Promise<void> {
|
|
157
|
+
// For messaging system, we don't actually delete messages
|
|
158
|
+
// This could be implemented to mark messages as deleted or archived
|
|
159
|
+
DyFM_Log.warn('Clear channel not implemented for messaging system');
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Message operations
|
|
163
|
+
async sendMessage(channelWrapper: DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation>, content: string): Promise<DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>> {
|
|
164
|
+
const message: DyFM_Msg_Message = await this.messagingService.sendMessage(
|
|
165
|
+
channelWrapper.id,
|
|
166
|
+
{
|
|
167
|
+
content,
|
|
168
|
+
type: 'text' as any,
|
|
169
|
+
},
|
|
170
|
+
this.botId,
|
|
171
|
+
'dynamo-bot'
|
|
172
|
+
);
|
|
173
|
+
|
|
174
|
+
return this.wrapMessage(message);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
async replyToMessage(messageWrapper: DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>, content: string): Promise<DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>> {
|
|
178
|
+
// In messaging system, we can't directly reply to a message
|
|
179
|
+
// Instead, we'll send a new message with reference to the original
|
|
180
|
+
const replyContent: string = `[Reply to message ${messageWrapper.id}] ${content}`;
|
|
181
|
+
|
|
182
|
+
const channelWrapper: DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation> = await this.getChannelByName(messageWrapper.channelName);
|
|
183
|
+
return this.sendMessage(channelWrapper, replyContent);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
async sendTyping(channelWrapper: DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation>): Promise<void> {
|
|
187
|
+
// Typing indicators not implemented for messaging system
|
|
188
|
+
DyFM_Log.info('Typing indicator not supported in messaging system');
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
async fetchMessages(channelWrapper: DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation>, limit: number): Promise<DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>[]> {
|
|
192
|
+
const messageService: DyNTS_Msg_Message_DataService = new DyNTS_Msg_Message_DataService({
|
|
193
|
+
issuer: 'dynamo-bot',
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
const messages: DyFM_Msg_Message[] = await messageService.dataDBService.find({
|
|
197
|
+
conversationId: channelWrapper.id,
|
|
198
|
+
__deleted: { $exists: false },
|
|
199
|
+
$sort: { sentAt: -1 },
|
|
200
|
+
$limit: limit
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
return messages.map((msg: DyFM_Msg_Message) => this.wrapMessage(msg));
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
async fetchMessagesById(id: string, limit: number): Promise<DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>[]> {
|
|
207
|
+
const messageService: DyNTS_Msg_Message_DataService = new DyNTS_Msg_Message_DataService({
|
|
208
|
+
issuer: 'dynamo-bot',
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
const messages: DyFM_Msg_Message[] = await messageService.dataDBService.find({
|
|
212
|
+
_id: id,
|
|
213
|
+
__deleted: { $exists: false },
|
|
214
|
+
$sort: { sentAt: -1 },
|
|
215
|
+
$limit: limit
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
return messages.map((msg: DyFM_Msg_Message) => this.wrapMessage(msg));
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
async fetchMessagesForMessage(messageWrapper: DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>, limit: number): Promise<DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>[]> {
|
|
222
|
+
const channelWrapper: DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation> = await this.getChannelByName(messageWrapper.channelName);
|
|
223
|
+
return this.fetchMessages(channelWrapper, limit);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
async fetchAllMessagesWithPaging(channelWrapper: DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation>, maxFetch: number = 1000): Promise<DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>[]> {
|
|
227
|
+
return this.fetchMessages(channelWrapper, maxFetch);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
async deleteMessage(messageWrapper: DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>): Promise<void> {
|
|
231
|
+
await this.messagingService.deleteMessage(messageWrapper.id, 'dynamo-bot', 'dynamo-bot');
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// User operations
|
|
235
|
+
async getUserByName(username: string): Promise<DyNTS_Bot_UserWrapper<DyFM_Msg_Participant>> {
|
|
236
|
+
// In messaging system, we don't have a direct user lookup by name
|
|
237
|
+
// This would need to be implemented based on your user management system
|
|
238
|
+
const userData: any = {
|
|
239
|
+
userId: username,
|
|
240
|
+
username: username,
|
|
241
|
+
displayName: username,
|
|
242
|
+
isBot: false,
|
|
243
|
+
role: 'member',
|
|
244
|
+
joinedAt: new Date()
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
return this.wrapUser(userData);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
getUserMention(userId: string): string {
|
|
251
|
+
return `@${userId}`;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
async readMembersInChannel(channelName: string): Promise<DyNTS_Bot_UserWrapper<DyFM_Msg_Participant>[]> {
|
|
255
|
+
const channelWrapper: DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation> = await this.getChannelByName(channelName);
|
|
256
|
+
const participants: DyFM_Msg_Participant[] = channelWrapper.rawPlatformChannel.participants || [];
|
|
257
|
+
|
|
258
|
+
return participants.map(participant => this.wrapUser(participant));
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
async readMemberNamesInChannel(channelName: string): Promise<string[]> {
|
|
262
|
+
const members: DyNTS_Bot_UserWrapper<DyFM_Msg_Participant>[] = await this.readMembersInChannel(channelName);
|
|
263
|
+
return members.map(member => member.username);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
// Advanced message queries
|
|
267
|
+
async getLastMessageSentBy(channelName: string, username: string): Promise<DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>> {
|
|
268
|
+
const channelWrapper: DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation> = await this.getChannelByName(channelName);
|
|
269
|
+
const messages: DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>[] = await this.fetchAllMessagesWithPaging(channelWrapper, 1000);
|
|
270
|
+
|
|
271
|
+
return messages.find(msg => msg.authorName === username) || null;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
async getLastMentionOf(channelName: string, username: string): Promise<DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>> {
|
|
275
|
+
const channelWrapper: DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation> = await this.getChannelByName(channelName);
|
|
276
|
+
const messages: DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>[] = await this.fetchAllMessagesWithPaging(channelWrapper, 1000);
|
|
277
|
+
|
|
278
|
+
return messages.find(msg =>
|
|
279
|
+
msg.content.includes(`@${username}`) ||
|
|
280
|
+
msg.content.includes(username)
|
|
281
|
+
) || null;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
async readLastMessageDatesByMembers(channelName: string, memberNames: string[]): Promise<DyNTS_Bot_LastMessageDate[]> {
|
|
285
|
+
const channelWrapper: DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation> = await this.getChannelByName(channelName);
|
|
286
|
+
const messages: DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>[] = await this.fetchAllMessagesWithPaging(channelWrapper, 1000);
|
|
287
|
+
|
|
288
|
+
const memberStatus: Record<string, { lastMessageDate: Date | null, allMessages: number }> = {};
|
|
289
|
+
memberNames.forEach((name: string) => {
|
|
290
|
+
memberStatus[name] = { lastMessageDate: null, allMessages: 0 };
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
const cutoffTime: number = Date.now() - (3 * week); // 3 weeks
|
|
294
|
+
|
|
295
|
+
messages.forEach((message: DyNTS_DyB_Message) => {
|
|
296
|
+
if (message.timestamp < cutoffTime) return;
|
|
297
|
+
|
|
298
|
+
const author = message.authorName;
|
|
299
|
+
if (memberStatus[author] !== undefined) {
|
|
300
|
+
memberStatus[author].allMessages++;
|
|
301
|
+
if (!memberStatus[author].lastMessageDate) {
|
|
302
|
+
memberStatus[author].lastMessageDate = new Date(message.timestamp);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
|
|
307
|
+
return memberNames.map((memberName: string) => {
|
|
308
|
+
const status: { lastMessageDate: Date | null, allMessages: number } = memberStatus[memberName];
|
|
309
|
+
return {
|
|
310
|
+
memberName: memberName,
|
|
311
|
+
allMessages: status.allMessages,
|
|
312
|
+
lastMessageDate: status.lastMessageDate
|
|
313
|
+
};
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
async readLastMessageWithMemberNamePingInIt(channelName: string, users: DyNTS_Bot_UserWrapper<DyFM_Msg_Participant>[]): Promise<DyNTS_Bot_LastMentionDate[]> {
|
|
318
|
+
const channelWrapper: DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation> = await this.getChannelByName(channelName);
|
|
319
|
+
const messages: DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>[] = await this.fetchAllMessagesWithPaging(channelWrapper, 1000);
|
|
320
|
+
|
|
321
|
+
const memberStatus: Record<string, { lastMentionDate: Date | null; allMentions: number }> = {};
|
|
322
|
+
users.forEach((user: DyNTS_Bot_UserWrapper<DyFM_Msg_Participant>) => {
|
|
323
|
+
memberStatus[user.username] = { lastMentionDate: null, allMentions: 0 };
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
const cutoffTime: number = Date.now() - (3 * week); // 3 weeks
|
|
327
|
+
|
|
328
|
+
messages.forEach((message: DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>) => {
|
|
329
|
+
if (message.timestamp < cutoffTime) return;
|
|
330
|
+
|
|
331
|
+
users.forEach((user: DyNTS_Bot_UserWrapper<DyFM_Msg_Participant>) => {
|
|
332
|
+
if (
|
|
333
|
+
message.content.includes(`@${user.id}`) &&
|
|
334
|
+
!memberStatus[user.username].lastMentionDate
|
|
335
|
+
) {
|
|
336
|
+
memberStatus[user.username].lastMentionDate = new Date(message.timestamp);
|
|
337
|
+
memberStatus[user.username].allMentions++;
|
|
338
|
+
}
|
|
339
|
+
});
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
return users.map((user: DyNTS_Bot_UserWrapper<DyFM_Msg_Participant>) => {
|
|
343
|
+
const status: { lastMentionDate: Date | null; allMentions: number } = memberStatus[user.username];
|
|
344
|
+
return {
|
|
345
|
+
memberId: user.id,
|
|
346
|
+
memberName: user.username,
|
|
347
|
+
allMentions: status.allMentions,
|
|
348
|
+
lastMentionDate: status.lastMentionDate
|
|
349
|
+
};
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
// Platform-specific features (not applicable for messaging system)
|
|
354
|
+
getRoleByName?(roleName: string): any {
|
|
355
|
+
return null; // Not applicable for messaging system
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
getRolePingByName?(roleName: string): Promise<string> {
|
|
359
|
+
return Promise.resolve(''); // Not applicable for messaging system
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
getRolePingsByName?(roleNames: string[]): Promise<string> {
|
|
363
|
+
return Promise.resolve(''); // Not applicable for messaging system
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
// Event binding
|
|
367
|
+
create_onMessageEventListener(
|
|
368
|
+
handler: (message: DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>, issuer: string) => void
|
|
369
|
+
): void {
|
|
370
|
+
// TODO: Implement message event listener for messaging system
|
|
371
|
+
DyFM_Log.info('Message event listener created (messaging integration)');
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
create_onErrorEventListener(handler: (error: DyFM_AnyError) => void): void {
|
|
375
|
+
// TODO: Implement error event listener for messaging system
|
|
376
|
+
DyFM_Log.info('Error event listener created (messaging integration)');
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
async sendReport(message: string): Promise<DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>> {
|
|
380
|
+
return await this.sendMessageToChannelByName(this.config.reportChannelName, message, 'dynamo-bot');
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
async sendReportIn(message: string): Promise<DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>> {
|
|
384
|
+
return await this.sendMessageToChannelByName(
|
|
385
|
+
this.config.reportChannelName,
|
|
386
|
+
`${this.botDisplayName} report for duty! ` +
|
|
387
|
+
`(v${DyNTS_global_settings.systemVersion} ${DyNTS_global_settings.env_settings?.environment})`,
|
|
388
|
+
'dynamo-bot'
|
|
389
|
+
);
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
wrapMessage(msgMessage: any): DyNTS_Bot_MessageWrapper<DyFM_Msg_Message> {
|
|
393
|
+
return {
|
|
394
|
+
id: msgMessage._id || msgMessage.id,
|
|
395
|
+
content: msgMessage.content || '',
|
|
396
|
+
authorId: msgMessage.senderId || msgMessage.authorId,
|
|
397
|
+
authorName: msgMessage.senderName || msgMessage.authorName,
|
|
398
|
+
authorDisplayName: msgMessage.senderDisplayName || msgMessage.authorDisplayName,
|
|
399
|
+
channelId: msgMessage.conversationId || msgMessage.channelId,
|
|
400
|
+
channelName: msgMessage.conversationName || msgMessage.channelName || 'unknown',
|
|
401
|
+
timestamp: msgMessage.sentAt ? new Date(msgMessage.sentAt).getTime() : Date.now(),
|
|
402
|
+
isBot: msgMessage.isAIGenerated || false,
|
|
403
|
+
replyToMessageId: msgMessage.replyToMessageId,
|
|
404
|
+
mentions: msgMessage.mentions || [],
|
|
405
|
+
rawPlatformMessage: msgMessage,
|
|
406
|
+
provider: this
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
wrapChannel(conversation: any): DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation> {
|
|
411
|
+
return {
|
|
412
|
+
id: conversation._id || conversation.id,
|
|
413
|
+
name: conversation.name || conversation.platformChannelId || 'unknown',
|
|
414
|
+
isTextBased: true,
|
|
415
|
+
isDM: conversation.type === 'direct',
|
|
416
|
+
rawPlatformChannel: conversation,
|
|
417
|
+
provider: this
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
wrapUser(user: any): DyNTS_Bot_UserWrapper<DyFM_Msg_Participant> {
|
|
422
|
+
return {
|
|
423
|
+
id: user.userId || user.id,
|
|
424
|
+
username: user.username || user.userId || user.id,
|
|
425
|
+
displayName: user.displayName || user.username || user.userId,
|
|
426
|
+
isBot: user.isBot || false,
|
|
427
|
+
rawPlatformUser: user,
|
|
428
|
+
provider: this
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
}
|
|
@@ -9,8 +9,7 @@
|
|
|
9
9
|
export * from './_models/dyb-platform.types';
|
|
10
10
|
|
|
11
11
|
// SERVICES
|
|
12
|
-
export * from './_services/dyb-messaging-provider.service';
|
|
12
|
+
export * from './_services/dyb-messaging-provider.control-service';
|
|
13
13
|
|
|
14
14
|
// COLLECTIONS
|
|
15
15
|
export * from './_collections/dyb-operations.util';
|
|
16
|
-
export * from './_collections/dyb.util';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { DyNTS_Bot_MessageWrapper } from '../../../_models/bot-message-wrapper.interface';
|
|
2
|
+
import { DyNTS_Bot_ChannelWrapper } from '../../../_models/bot-channel-wrapper.interface';
|
|
3
|
+
import { DyNTS_Bot_UserWrapper } from '../../../_models/bot-user-wrapper.interface';
|
|
4
4
|
|
|
5
5
|
// Slack Bot Platform-Specific Types
|
|
6
6
|
// TODO: Replace 'any' with actual Slack SDK types when implementing
|
|
7
|
-
export type DyNTS_SlB_Message =
|
|
8
|
-
export type DyNTS_SlB_Channel =
|
|
9
|
-
export type DyNTS_SlB_User =
|
|
7
|
+
export type DyNTS_SlB_Message = DyNTS_Bot_MessageWrapper<any>;
|
|
8
|
+
export type DyNTS_SlB_Channel = DyNTS_Bot_ChannelWrapper<any>;
|
|
9
|
+
export type DyNTS_SlB_User = DyNTS_Bot_UserWrapper<any>;
|
package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { DyFM_AnyError, DyFM_Error } from '@futdevpro/fsm-dynamo';
|
|
2
|
+
import { DyNTS_Bot_MessagingProvider_ServiceBase, DyNTS_Bot_MessagingProvider_Config, Slack_MessagingProviderConfig } from '../../../_services/bot-messaging-provider.service-base';
|
|
3
|
+
import { DyNTS_Bot_ChannelWrapper } from '../../../_models/bot-channel-wrapper.interface';
|
|
4
|
+
import { DyNTS_Bot_LastMessageDate } from '../../../_models/bot-last-message-date.interface';
|
|
5
|
+
import { DyNTS_Bot_LastMentionDate } from '../../../_models/bot-last-mention-date.interface';
|
|
6
|
+
import { DyNTS_Bot_MessagingProvider_Type } from '../../../_enums/bot-message-provider.enum';
|
|
7
|
+
import { DyNTS_Bot_MessageWrapper } from '../../../_models/bot-message-wrapper.interface';
|
|
8
|
+
import { DyNTS_Bot_UserWrapper } from '../../../_models/bot-user-wrapper.interface';
|
|
9
|
+
|
|
10
|
+
// Stub types for Slack - will be replaced with actual Slack SDK types when implemented
|
|
11
|
+
type SlackChannel = any;
|
|
12
|
+
type SlackMessage = any;
|
|
13
|
+
type SlackUser = any;
|
|
14
|
+
|
|
15
|
+
export class DyNTS_SlB_MessagingProvider_ControlService extends DyNTS_Bot_MessagingProvider_ServiceBase<
|
|
16
|
+
SlackChannel,
|
|
17
|
+
SlackMessage,
|
|
18
|
+
SlackUser,
|
|
19
|
+
Slack_MessagingProviderConfig,
|
|
20
|
+
any
|
|
21
|
+
> {
|
|
22
|
+
readonly name = 'slack';
|
|
23
|
+
readonly type = DyNTS_Bot_MessagingProvider_Type.slack;
|
|
24
|
+
|
|
25
|
+
get botId(): string {
|
|
26
|
+
return 'slack-bot-stub';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
get botDisplayName(): string {
|
|
30
|
+
return 'Slack Bot (Stub)';
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
override readonly config: Slack_MessagingProviderConfig;
|
|
34
|
+
|
|
35
|
+
/* override protected readonly channelCache: Map<string, SlackChannel> = new Map();
|
|
36
|
+
override protected readonly roleCache: Map<string, any> = new Map(); */
|
|
37
|
+
|
|
38
|
+
constructor(setConfig: Slack_MessagingProviderConfig) {
|
|
39
|
+
super();
|
|
40
|
+
this.config = setConfig;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
async setup(issuer: string): Promise<void> {
|
|
44
|
+
throw new Error('Slack provider not yet implemented');
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
async start(issuer: string): Promise<void> {
|
|
48
|
+
throw new Error('Slack provider not yet implemented');
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Channel operations
|
|
52
|
+
async getChannelByName(name: string): Promise<DyNTS_Bot_ChannelWrapper<SlackChannel>> {
|
|
53
|
+
throw new Error('Slack provider not yet implemented');
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
async getChannelById(id: string): Promise<DyNTS_Bot_ChannelWrapper<SlackChannel>> {
|
|
57
|
+
throw new Error('Slack provider not yet implemented');
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
async sendMessageToChannelByName(channelName: string, message: string, issuer: string): Promise<DyNTS_Bot_MessageWrapper<SlackMessage>> {
|
|
61
|
+
throw new Error('Slack provider not yet implemented');
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
async getMessagesFromChannelByChannelName(channelName: string, limit?: number): Promise<DyNTS_Bot_MessageWrapper<SlackMessage>[]> {
|
|
65
|
+
throw new Error('Slack provider not yet implemented');
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
async getLastMessageInChannel(channelName: string): Promise<DyNTS_Bot_MessageWrapper<SlackMessage>> {
|
|
69
|
+
throw new Error('Slack provider not yet implemented');
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async clearChannel(channelWrapper: DyNTS_Bot_ChannelWrapper<SlackChannel>): Promise<void> {
|
|
73
|
+
throw new Error('Slack provider not yet implemented');
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Message operations
|
|
77
|
+
async sendMessage(channelWrapper: DyNTS_Bot_ChannelWrapper<SlackChannel>, content: string): Promise<DyNTS_Bot_MessageWrapper<SlackMessage>> {
|
|
78
|
+
throw new Error('Slack provider not yet implemented');
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
async replyToMessage(messageWrapper: DyNTS_Bot_MessageWrapper<SlackMessage>, content: string): Promise<DyNTS_Bot_MessageWrapper<SlackMessage>> {
|
|
82
|
+
throw new Error('Slack provider not yet implemented');
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
async sendTyping(channelWrapper: DyNTS_Bot_ChannelWrapper<SlackChannel>): Promise<void> {
|
|
86
|
+
throw new Error('Slack provider not yet implemented');
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
async fetchMessages(channelWrapper: DyNTS_Bot_ChannelWrapper<SlackChannel>, limit: number): Promise<DyNTS_Bot_MessageWrapper<SlackMessage>[]> {
|
|
90
|
+
throw new Error('Slack provider not yet implemented');
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
async fetchMessagesById(id: string, limit: number): Promise<DyNTS_Bot_MessageWrapper<SlackMessage>[]> {
|
|
94
|
+
throw new Error('Slack provider not yet implemented');
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
async fetchMessagesForMessage(messageWrapper: DyNTS_Bot_MessageWrapper<SlackMessage>, limit: number): Promise<DyNTS_Bot_MessageWrapper<SlackMessage>[]> {
|
|
98
|
+
throw new Error('Slack provider not yet implemented');
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
async fetchAllMessagesWithPaging(channelWrapper: DyNTS_Bot_ChannelWrapper<SlackChannel>, maxFetch?: number): Promise<DyNTS_Bot_MessageWrapper<SlackMessage>[]> {
|
|
102
|
+
throw new Error('Slack provider not yet implemented');
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
async deleteMessage(messageWrapper: DyNTS_Bot_MessageWrapper<SlackMessage>): Promise<void> {
|
|
106
|
+
throw new Error('Slack provider not yet implemented');
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// User operations
|
|
110
|
+
async getUserByName(username: string): Promise<DyNTS_Bot_UserWrapper<SlackUser>> {
|
|
111
|
+
throw new Error('Slack provider not yet implemented');
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
getUserMention(userId: string): string {
|
|
115
|
+
return `<@${userId}>`;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
async readMembersInChannel(channelName: string): Promise<DyNTS_Bot_UserWrapper<SlackUser>[]> {
|
|
119
|
+
throw new Error('Slack provider not yet implemented');
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
async readMemberNamesInChannel(channelName: string): Promise<string[]> {
|
|
123
|
+
throw new Error('Slack provider not yet implemented');
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Advanced message queries
|
|
127
|
+
async getLastMessageSentBy(channelName: string, username: string): Promise<DyNTS_Bot_MessageWrapper<SlackMessage>> {
|
|
128
|
+
throw new Error('Slack provider not yet implemented');
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
async getLastMentionOf(channelName: string, username: string): Promise<DyNTS_Bot_MessageWrapper<SlackMessage>> {
|
|
132
|
+
throw new Error('Slack provider not yet implemented');
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
async readLastMessageDatesByMembers(channelName: string, memberNames: string[]): Promise<DyNTS_Bot_LastMessageDate[]> {
|
|
136
|
+
throw new Error('Slack provider not yet implemented');
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
async readLastMessageWithMemberNamePingInIt(channelName: string, users: DyNTS_Bot_UserWrapper<SlackUser>[]): Promise<DyNTS_Bot_LastMentionDate[]> {
|
|
140
|
+
throw new Error('Slack provider not yet implemented');
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Platform-specific features
|
|
144
|
+
getRoleByName?(roleName: string): any {
|
|
145
|
+
throw new Error('Slack provider not yet implemented');
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
getRolePingByName?(roleName: string): Promise<string> {
|
|
149
|
+
throw new Error('Slack provider not yet implemented');
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
getRolePingsByName?(roleNames: string[]): Promise<string> {
|
|
153
|
+
throw new Error('Slack provider not yet implemented');
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Event binding
|
|
157
|
+
create_onMessageEventListener(
|
|
158
|
+
handler: (message: DyNTS_Bot_MessageWrapper<SlackMessage>, issuer: string) => void
|
|
159
|
+
): void {
|
|
160
|
+
throw new Error('Slack provider not yet implemented');
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
create_onErrorEventListener(handler: (error: DyFM_AnyError) => void): void {
|
|
164
|
+
throw new Error('Slack provider not yet implemented');
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
async sendReport(message: string): Promise<DyNTS_Bot_MessageWrapper<SlackMessage>> {
|
|
168
|
+
throw new Error('Slack provider not yet implemented');
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
async sendReportIn(message: string): Promise<DyNTS_Bot_MessageWrapper<SlackMessage>> {
|
|
172
|
+
throw new Error('Slack provider not yet implemented');
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
wrapMessage(message: SlackMessage): DyNTS_Bot_MessageWrapper<SlackMessage> {
|
|
176
|
+
throw new Error('Slack provider not yet implemented');
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
wrapChannel(channel: SlackChannel): DyNTS_Bot_ChannelWrapper<SlackChannel> {
|
|
180
|
+
throw new Error('Slack provider not yet implemented');
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
wrapUser(user: SlackUser): DyNTS_Bot_UserWrapper<SlackUser> {
|
|
184
|
+
throw new Error('Slack provider not yet implemented');
|
|
185
|
+
}
|
|
186
|
+
}
|
|
@@ -8,7 +8,5 @@
|
|
|
8
8
|
export * from './_models/slb-platform.types';
|
|
9
9
|
|
|
10
10
|
// SERVICES
|
|
11
|
-
export * from './_services/slb-messaging-provider.service';
|
|
11
|
+
export * from './_services/slb-messaging-provider.control-service';
|
|
12
12
|
|
|
13
|
-
// COLLECTIONS
|
|
14
|
-
export * from './_collections/slb-operations.util';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { DyNTS_Bot_MessageWrapper } from '../../../_models/bot-message-wrapper.interface';
|
|
2
|
+
import { DyNTS_Bot_ChannelWrapper } from '../../../_models/bot-channel-wrapper.interface';
|
|
3
|
+
import { DyNTS_Bot_UserWrapper } from '../../../_models/bot-user-wrapper.interface';
|
|
4
4
|
|
|
5
5
|
// Teams Bot Platform-Specific Types
|
|
6
6
|
// TODO: Replace 'any' with actual Teams SDK types when implementing
|
|
7
|
-
export type DyNTS_TeB_Message =
|
|
8
|
-
export type DyNTS_TeB_Channel =
|
|
9
|
-
export type DyNTS_TeB_User =
|
|
7
|
+
export type DyNTS_TeB_Message = DyNTS_Bot_MessageWrapper<any>;
|
|
8
|
+
export type DyNTS_TeB_Channel = DyNTS_Bot_ChannelWrapper<any>;
|
|
9
|
+
export type DyNTS_TeB_User = DyNTS_Bot_UserWrapper<any>;
|