diff --git a/src/activities/discord/gateway/add-channelId.activity.ts b/src/activities/discord/gateway/add-channelId.activity.ts new file mode 100644 index 0000000..4e1c9e4 --- /dev/null +++ b/src/activities/discord/gateway/add-channelId.activity.ts @@ -0,0 +1,20 @@ +import { GatewayMessageCreateDispatchData } from 'discord-api-types/v10'; +import { DatabaseManager, makeThreadRepository } from '@togethercrew.dev/db'; + +export async function getChannelIdFromThread( + data: GatewayMessageCreateDispatchData, +) { + try { + let channelId: string; + const dbConnection = await DatabaseManager.getInstance().getGuildDb( + data.guild_id, + ); + const threadRepository = makeThreadRepository(dbConnection); + channelId = (await threadRepository.findOne({ id: data.channel_id })) + .parent_id; + return channelId; + } catch (error) { + console.error('Error in getChannelIdFromThread:', error); + throw error; + } +} diff --git a/src/activities/discord/gateway/index.ts b/src/activities/discord/gateway/index.ts index 937b431..0937d03 100644 --- a/src/activities/discord/gateway/index.ts +++ b/src/activities/discord/gateway/index.ts @@ -2,3 +2,4 @@ export * from './channelSelection.activity'; export * from './ignoreUser.activity'; export * from './mapping.activity'; export * from './persistence.activity'; +export * from './add-channelId.activity'; diff --git a/src/activities/discord/gateway/mapping.activity.ts b/src/activities/discord/gateway/mapping.activity.ts index 0896c6b..ef940fe 100644 --- a/src/activities/discord/gateway/mapping.activity.ts +++ b/src/activities/discord/gateway/mapping.activity.ts @@ -1,20 +1,31 @@ import { - GatewayChannelCreateDispatchData, GatewayChannelDeleteDispatchData, - GatewayChannelUpdateDispatchData, GatewayGuildMemberAddDispatchData, - GatewayGuildMemberRemoveDispatchData, GatewayGuildMemberUpdateDispatchData, - GatewayGuildRoleCreateDispatchData, GatewayGuildRoleDeleteDispatchData, - GatewayGuildRoleUpdateDispatchData, GatewayMessageCreateDispatchData, - GatewayMessageDeleteBulkDispatchData, GatewayMessageDeleteDispatchData, - GatewayMessageReactionAddDispatchData, GatewayMessageReactionRemoveAllDispatchData, - GatewayMessageReactionRemoveDispatchData, GatewayMessageReactionRemoveEmojiDispatchData, - GatewayMessageUpdateDispatchData + GatewayChannelCreateDispatchData, + GatewayChannelDeleteDispatchData, + GatewayChannelUpdateDispatchData, + GatewayGuildMemberAddDispatchData, + GatewayGuildMemberRemoveDispatchData, + GatewayGuildMemberUpdateDispatchData, + GatewayGuildRoleCreateDispatchData, + GatewayGuildRoleDeleteDispatchData, + GatewayGuildRoleUpdateDispatchData, + GatewayMessageCreateDispatchData, + GatewayMessageDeleteBulkDispatchData, + GatewayMessageDeleteDispatchData, + GatewayMessageReactionAddDispatchData, + GatewayMessageReactionRemoveAllDispatchData, + GatewayMessageReactionRemoveDispatchData, + GatewayMessageReactionRemoveEmojiDispatchData, + GatewayMessageUpdateDispatchData, } from 'discord-api-types/v10'; import { IRawInfo } from '@togethercrew.dev/db'; import parentLogger from '../../../config/logger.config'; import { - ChannelMappers, GuildMemberMappers, MessageMappers, RoleMappers + ChannelMappers, + GuildMemberMappers, + MessageMappers, + RoleMappers, } from '../../../workflows/discord/gateway/mappers'; const logger = parentLogger.child({ activity: 'discord:event:map' }); diff --git a/src/activities/discord/gateway/persistence.activity.ts b/src/activities/discord/gateway/persistence.activity.ts index 5b791bd..ee1e486 100644 --- a/src/activities/discord/gateway/persistence.activity.ts +++ b/src/activities/discord/gateway/persistence.activity.ts @@ -2,10 +2,22 @@ import { Snowflake } from 'discord.js'; import { FilterQuery } from 'mongoose'; import { - DatabaseManager, IChannel, IChannelUpdateBody, IGuildMember, IGuildMemberUpdateBody, IRawInfo, - IRawInfoUpdateBody, IRole, IRoleUpdateBody, IThread, makeChannelRepository, - makeGuildMemberRepository, makeRawInfoRepository, makeRoleRepository, makeThreadRepository, - ThreadUpdateBody + DatabaseManager, + IChannel, + IChannelUpdateBody, + IGuildMember, + IGuildMemberUpdateBody, + IRawInfo, + IRawInfoUpdateBody, + IRole, + IRoleUpdateBody, + IThread, + makeChannelRepository, + makeGuildMemberRepository, + makeRawInfoRepository, + makeRoleRepository, + makeThreadRepository, + ThreadUpdateBody, } from '@togethercrew.dev/db'; import parentLogger from '../../../config/logger.config'; @@ -138,6 +150,7 @@ export async function createRawInfo( data: IRawInfo, ): Promise { try { + console.log('Creating raw info', data); const dbConnection = await DatabaseManager.getInstance().getGuildDb(guildId); const repository = makeRawInfoRepository(dbConnection); diff --git a/src/examples/client/discordGateway.example.ts b/src/examples/client/discordGateway.example.ts index 5e61a43..211e458 100644 --- a/src/examples/client/discordGateway.example.ts +++ b/src/examples/client/discordGateway.example.ts @@ -1,9 +1,15 @@ -import { GatewayDispatchEvents, GatewayDispatchPayload } from 'discord-api-types/v10'; +import { + GatewayDispatchEvents, + GatewayDispatchPayload, +} from 'discord-api-types/v10'; import { IntentsBitField } from 'discord.js'; import { REST } from '@discordjs/rest'; import { WebSocketManager, WebSocketShardEvents } from '@discordjs/ws'; -import { Client as TemporalClient, Connection as TemporalConnection } from '@temporalio/client'; +import { + Client as TemporalClient, + Connection as TemporalConnection, +} from '@temporalio/client'; import { DiscordGatewayEventWorkflow } from '../../workflows/discord/gateway'; diff --git a/src/libs/telegram/helpers/transformTelegramChat.ts b/src/libs/telegram/helpers/transformTelegramChat.ts index f3df209..8ca025e 100644 --- a/src/libs/telegram/helpers/transformTelegramChat.ts +++ b/src/libs/telegram/helpers/transformTelegramChat.ts @@ -36,16 +36,10 @@ const commonOptionalDict = [ ]; // Private chat specific fields -const privateChatOptionalDict = [ - 'chat_photo', - 'chat_shared', -]; +const privateChatOptionalDict = ['chat_photo', 'chat_shared']; // Group chat specific fields -const groupChatOptionalDict = [ - 'chat_photo', - 'chat_shared', -]; +const groupChatOptionalDict = ['chat_photo', 'chat_shared']; // Supergroup specific fields const supergroupOptionalDict = [ @@ -71,14 +65,9 @@ const supergroupOptionalDict = [ ]; // Channel specific fields -const channelOptionalDict = [ - 'chat_photo', - 'chat_shared', -]; +const channelOptionalDict = ['chat_photo', 'chat_shared']; -export function transformTelegramChat( - chat: Chat, -): Record { +export function transformTelegramChat(chat: Chat): Record { // Make a shallow copy of the chat const obj: Record = { ...chat }; @@ -112,4 +101,4 @@ export function transformTelegramChat( }); return obj; -} \ No newline at end of file +} diff --git a/src/libs/telegram/services/chat.service.ts b/src/libs/telegram/services/chat.service.ts index 8ff38ea..79bbbb1 100644 --- a/src/libs/telegram/services/chat.service.ts +++ b/src/libs/telegram/services/chat.service.ts @@ -9,7 +9,9 @@ class ChatService { if (tx) { tx.run(CREATE_OR_UPDATE_CHAT, { chat: transformTelegramChat(chat) }); } else { - await neo4jService.run(CREATE_OR_UPDATE_CHAT, { chat: transformTelegramChat(chat) }); + await neo4jService.run(CREATE_OR_UPDATE_CHAT, { + chat: transformTelegramChat(chat), + }); } } diff --git a/src/workflows/discord/gateway/handlers/message.handler.ts b/src/workflows/discord/gateway/handlers/message.handler.ts index 28b5e28..c02d2be 100644 --- a/src/workflows/discord/gateway/handlers/message.handler.ts +++ b/src/workflows/discord/gateway/handlers/message.handler.ts @@ -1,13 +1,23 @@ import { - GatewayMessageCreateDispatchData, GatewayMessageDeleteBulkDispatchData, - GatewayMessageDeleteDispatchData, GatewayMessageReactionAddDispatchData, - GatewayMessageReactionRemoveAllDispatchData, GatewayMessageReactionRemoveDispatchData, - GatewayMessageReactionRemoveEmojiDispatchData, GatewayMessageUpdateDispatchData + GatewayMessageCreateDispatchData, + GatewayMessageDeleteBulkDispatchData, + GatewayMessageDeleteDispatchData, + GatewayMessageReactionAddDispatchData, + GatewayMessageReactionRemoveAllDispatchData, + GatewayMessageReactionRemoveDispatchData, + GatewayMessageReactionRemoveEmojiDispatchData, + GatewayMessageUpdateDispatchData, } from 'discord-api-types/v10'; import { proxyActivities } from '@temporalio/workflow'; import type * as Activities from '../../../../activities'; +import { + DatabaseManager, + makeChannelRepository, + makeRawInfoRepository, + makeThreadRepository, +} from '@togethercrew.dev/db'; const activities = proxyActivities({ startToCloseTimeout: '1 minute', @@ -28,8 +38,18 @@ export class MessageHandler { static async create(data: GatewayMessageCreateDispatchData) { if (!(await guardMessage(data.guild_id, data.channel_id, data.author.id))) return; - const mapped = await activities.mapMessageCreate(data); + // TODO: Need to remove this section + const tempData: any = data; + const isThreadMessage = + tempData.channel_type === 10 || + tempData.channel_type === 11 || + tempData.channel_type === 12; + if (isThreadMessage) { + const channelId = await activities.getChannelIdFromThread(data); + mapped.channelId = channelId; + } + // TODO: Until Here await activities.createRawInfo(data.guild_id, mapped); } @@ -38,6 +58,7 @@ export class MessageHandler { return; const mapped = await activities.mapMessageUpdate(data); + await activities.updateRawInfo( data.guild_id, { messageId: data.id }, diff --git a/src/workflows/discord/gateway/handlers/thread.handler.ts b/src/workflows/discord/gateway/handlers/thread.handler.ts index b2b8859..4b9957f 100644 --- a/src/workflows/discord/gateway/handlers/thread.handler.ts +++ b/src/workflows/discord/gateway/handlers/thread.handler.ts @@ -1,6 +1,7 @@ import { - GatewayThreadCreateDispatchData, GatewayThreadDeleteDispatchData, - GatewayThreadUpdateDispatchData + GatewayThreadCreateDispatchData, + GatewayThreadDeleteDispatchData, + GatewayThreadUpdateDispatchData, } from 'discord-api-types/v10'; import { proxyActivities } from '@temporalio/workflow'; diff --git a/src/workflows/discord/gateway/mappers/message.mapper.ts b/src/workflows/discord/gateway/mappers/message.mapper.ts index e36d1ea..f099e7b 100644 --- a/src/workflows/discord/gateway/mappers/message.mapper.ts +++ b/src/workflows/discord/gateway/mappers/message.mapper.ts @@ -1,7 +1,9 @@ import { - GatewayMessageReactionAddDispatchData, GatewayMessageReactionRemoveAllDispatchData, - GatewayMessageReactionRemoveDispatchData, GatewayMessageReactionRemoveEmojiDispatchData, - GatewayMessageUpdateDispatchData + GatewayMessageReactionAddDispatchData, + GatewayMessageReactionRemoveAllDispatchData, + GatewayMessageReactionRemoveDispatchData, + GatewayMessageReactionRemoveEmojiDispatchData, + GatewayMessageUpdateDispatchData, } from 'discord-api-types/v10'; import { IRawInfo, IRawInfoUpdateBody } from '@togethercrew.dev/db'; diff --git a/src/workflows/telegram/index.ts b/src/workflows/telegram/index.ts index 4492d5f..9f7e0e3 100644 --- a/src/workflows/telegram/index.ts +++ b/src/workflows/telegram/index.ts @@ -2,4 +2,4 @@ export { TelegramVerifyWorkflow } from './TelegramVerifyWorkflow'; export { TelegramEventWorkflow } from './TelegramEventWorkflow'; export { TelegramQuestionWorkflow } from './TelegramQuestionWorkflow'; export { TelegramSummaryWorkflow } from './TelegramSummaryWorkflow'; -export { TelegramVectorIngestionWorkflow } from './TelegramVectorIngestionWorkflow'; \ No newline at end of file +export { TelegramVectorIngestionWorkflow } from './TelegramVectorIngestionWorkflow';