Skip to content

Commit fe65a97

Browse files
Merge pull request #21 from TogetherCrew/16-implement-workflow-activities
feat: add channel id for thread message
2 parents 8a8ae65 + 83d8368 commit fe65a97

11 files changed

Lines changed: 110 additions & 44 deletions

File tree

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { GatewayMessageCreateDispatchData } from 'discord-api-types/v10';
2+
import { DatabaseManager, makeThreadRepository } from '@togethercrew.dev/db';
3+
4+
export async function getChannelIdFromThread(
5+
data: GatewayMessageCreateDispatchData,
6+
) {
7+
try {
8+
let channelId: string;
9+
const dbConnection = await DatabaseManager.getInstance().getGuildDb(
10+
data.guild_id,
11+
);
12+
const threadRepository = makeThreadRepository(dbConnection);
13+
channelId = (await threadRepository.findOne({ id: data.channel_id }))
14+
.parent_id;
15+
return channelId;
16+
} catch (error) {
17+
console.error('Error in getChannelIdFromThread:', error);
18+
throw error;
19+
}
20+
}

src/activities/discord/gateway/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ export * from './channelSelection.activity';
22
export * from './ignoreUser.activity';
33
export * from './mapping.activity';
44
export * from './persistence.activity';
5+
export * from './add-channelId.activity';

src/activities/discord/gateway/mapping.activity.ts

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,31 @@
11
import {
2-
GatewayChannelCreateDispatchData, GatewayChannelDeleteDispatchData,
3-
GatewayChannelUpdateDispatchData, GatewayGuildMemberAddDispatchData,
4-
GatewayGuildMemberRemoveDispatchData, GatewayGuildMemberUpdateDispatchData,
5-
GatewayGuildRoleCreateDispatchData, GatewayGuildRoleDeleteDispatchData,
6-
GatewayGuildRoleUpdateDispatchData, GatewayMessageCreateDispatchData,
7-
GatewayMessageDeleteBulkDispatchData, GatewayMessageDeleteDispatchData,
8-
GatewayMessageReactionAddDispatchData, GatewayMessageReactionRemoveAllDispatchData,
9-
GatewayMessageReactionRemoveDispatchData, GatewayMessageReactionRemoveEmojiDispatchData,
10-
GatewayMessageUpdateDispatchData
2+
GatewayChannelCreateDispatchData,
3+
GatewayChannelDeleteDispatchData,
4+
GatewayChannelUpdateDispatchData,
5+
GatewayGuildMemberAddDispatchData,
6+
GatewayGuildMemberRemoveDispatchData,
7+
GatewayGuildMemberUpdateDispatchData,
8+
GatewayGuildRoleCreateDispatchData,
9+
GatewayGuildRoleDeleteDispatchData,
10+
GatewayGuildRoleUpdateDispatchData,
11+
GatewayMessageCreateDispatchData,
12+
GatewayMessageDeleteBulkDispatchData,
13+
GatewayMessageDeleteDispatchData,
14+
GatewayMessageReactionAddDispatchData,
15+
GatewayMessageReactionRemoveAllDispatchData,
16+
GatewayMessageReactionRemoveDispatchData,
17+
GatewayMessageReactionRemoveEmojiDispatchData,
18+
GatewayMessageUpdateDispatchData,
1119
} from 'discord-api-types/v10';
1220

1321
import { IRawInfo } from '@togethercrew.dev/db';
1422

1523
import parentLogger from '../../../config/logger.config';
1624
import {
17-
ChannelMappers, GuildMemberMappers, MessageMappers, RoleMappers
25+
ChannelMappers,
26+
GuildMemberMappers,
27+
MessageMappers,
28+
RoleMappers,
1829
} from '../../../workflows/discord/gateway/mappers';
1930

2031
const logger = parentLogger.child({ activity: 'discord:event:map' });

src/activities/discord/gateway/persistence.activity.ts

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,22 @@ import { Snowflake } from 'discord.js';
22
import { FilterQuery } from 'mongoose';
33

44
import {
5-
DatabaseManager, IChannel, IChannelUpdateBody, IGuildMember, IGuildMemberUpdateBody, IRawInfo,
6-
IRawInfoUpdateBody, IRole, IRoleUpdateBody, IThread, makeChannelRepository,
7-
makeGuildMemberRepository, makeRawInfoRepository, makeRoleRepository, makeThreadRepository,
8-
ThreadUpdateBody
5+
DatabaseManager,
6+
IChannel,
7+
IChannelUpdateBody,
8+
IGuildMember,
9+
IGuildMemberUpdateBody,
10+
IRawInfo,
11+
IRawInfoUpdateBody,
12+
IRole,
13+
IRoleUpdateBody,
14+
IThread,
15+
makeChannelRepository,
16+
makeGuildMemberRepository,
17+
makeRawInfoRepository,
18+
makeRoleRepository,
19+
makeThreadRepository,
20+
ThreadUpdateBody,
921
} from '@togethercrew.dev/db';
1022

1123
import parentLogger from '../../../config/logger.config';
@@ -138,6 +150,7 @@ export async function createRawInfo(
138150
data: IRawInfo,
139151
): Promise<void> {
140152
try {
153+
console.log('Creating raw info', data);
141154
const dbConnection =
142155
await DatabaseManager.getInstance().getGuildDb(guildId);
143156
const repository = makeRawInfoRepository(dbConnection);

src/examples/client/discordGateway.example.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
1-
import { GatewayDispatchEvents, GatewayDispatchPayload } from 'discord-api-types/v10';
1+
import {
2+
GatewayDispatchEvents,
3+
GatewayDispatchPayload,
4+
} from 'discord-api-types/v10';
25
import { IntentsBitField } from 'discord.js';
36

47
import { REST } from '@discordjs/rest';
58
import { WebSocketManager, WebSocketShardEvents } from '@discordjs/ws';
6-
import { Client as TemporalClient, Connection as TemporalConnection } from '@temporalio/client';
9+
import {
10+
Client as TemporalClient,
11+
Connection as TemporalConnection,
12+
} from '@temporalio/client';
713

814
import { DiscordGatewayEventWorkflow } from '../../workflows/discord/gateway';
915

src/libs/telegram/helpers/transformTelegramChat.ts

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,10 @@ const commonOptionalDict = [
3636
];
3737

3838
// Private chat specific fields
39-
const privateChatOptionalDict = [
40-
'chat_photo',
41-
'chat_shared',
42-
];
39+
const privateChatOptionalDict = ['chat_photo', 'chat_shared'];
4340

4441
// Group chat specific fields
45-
const groupChatOptionalDict = [
46-
'chat_photo',
47-
'chat_shared',
48-
];
42+
const groupChatOptionalDict = ['chat_photo', 'chat_shared'];
4943

5044
// Supergroup specific fields
5145
const supergroupOptionalDict = [
@@ -71,14 +65,9 @@ const supergroupOptionalDict = [
7165
];
7266

7367
// Channel specific fields
74-
const channelOptionalDict = [
75-
'chat_photo',
76-
'chat_shared',
77-
];
68+
const channelOptionalDict = ['chat_photo', 'chat_shared'];
7869

79-
export function transformTelegramChat(
80-
chat: Chat,
81-
): Record<string, any> {
70+
export function transformTelegramChat(chat: Chat): Record<string, any> {
8271
// Make a shallow copy of the chat
8372
const obj: Record<string, any> = { ...chat };
8473

@@ -112,4 +101,4 @@ export function transformTelegramChat(
112101
});
113102

114103
return obj;
115-
}
104+
}

src/libs/telegram/services/chat.service.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ class ChatService {
99
if (tx) {
1010
tx.run(CREATE_OR_UPDATE_CHAT, { chat: transformTelegramChat(chat) });
1111
} else {
12-
await neo4jService.run(CREATE_OR_UPDATE_CHAT, { chat: transformTelegramChat(chat) });
12+
await neo4jService.run(CREATE_OR_UPDATE_CHAT, {
13+
chat: transformTelegramChat(chat),
14+
});
1315
}
1416
}
1517

src/workflows/discord/gateway/handlers/message.handler.ts

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
11
import {
2-
GatewayMessageCreateDispatchData, GatewayMessageDeleteBulkDispatchData,
3-
GatewayMessageDeleteDispatchData, GatewayMessageReactionAddDispatchData,
4-
GatewayMessageReactionRemoveAllDispatchData, GatewayMessageReactionRemoveDispatchData,
5-
GatewayMessageReactionRemoveEmojiDispatchData, GatewayMessageUpdateDispatchData
2+
GatewayMessageCreateDispatchData,
3+
GatewayMessageDeleteBulkDispatchData,
4+
GatewayMessageDeleteDispatchData,
5+
GatewayMessageReactionAddDispatchData,
6+
GatewayMessageReactionRemoveAllDispatchData,
7+
GatewayMessageReactionRemoveDispatchData,
8+
GatewayMessageReactionRemoveEmojiDispatchData,
9+
GatewayMessageUpdateDispatchData,
610
} from 'discord-api-types/v10';
711

812
import { proxyActivities } from '@temporalio/workflow';
913

1014
import type * as Activities from '../../../../activities';
15+
import {
16+
DatabaseManager,
17+
makeChannelRepository,
18+
makeRawInfoRepository,
19+
makeThreadRepository,
20+
} from '@togethercrew.dev/db';
1121

1222
const activities = proxyActivities<typeof Activities>({
1323
startToCloseTimeout: '1 minute',
@@ -28,8 +38,18 @@ export class MessageHandler {
2838
static async create(data: GatewayMessageCreateDispatchData) {
2939
if (!(await guardMessage(data.guild_id, data.channel_id, data.author.id)))
3040
return;
31-
3241
const mapped = await activities.mapMessageCreate(data);
42+
// TODO: Need to remove this section
43+
const tempData: any = data;
44+
const isThreadMessage =
45+
tempData.channel_type === 10 ||
46+
tempData.channel_type === 11 ||
47+
tempData.channel_type === 12;
48+
if (isThreadMessage) {
49+
const channelId = await activities.getChannelIdFromThread(data);
50+
mapped.channelId = channelId;
51+
}
52+
// TODO: Until Here
3353
await activities.createRawInfo(data.guild_id, mapped);
3454
}
3555

@@ -38,6 +58,7 @@ export class MessageHandler {
3858
return;
3959

4060
const mapped = await activities.mapMessageUpdate(data);
61+
4162
await activities.updateRawInfo(
4263
data.guild_id,
4364
{ messageId: data.id },

src/workflows/discord/gateway/handlers/thread.handler.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {
2-
GatewayThreadCreateDispatchData, GatewayThreadDeleteDispatchData,
3-
GatewayThreadUpdateDispatchData
2+
GatewayThreadCreateDispatchData,
3+
GatewayThreadDeleteDispatchData,
4+
GatewayThreadUpdateDispatchData,
45
} from 'discord-api-types/v10';
56

67
import { proxyActivities } from '@temporalio/workflow';

src/workflows/discord/gateway/mappers/message.mapper.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import {
2-
GatewayMessageReactionAddDispatchData, GatewayMessageReactionRemoveAllDispatchData,
3-
GatewayMessageReactionRemoveDispatchData, GatewayMessageReactionRemoveEmojiDispatchData,
4-
GatewayMessageUpdateDispatchData
2+
GatewayMessageReactionAddDispatchData,
3+
GatewayMessageReactionRemoveAllDispatchData,
4+
GatewayMessageReactionRemoveDispatchData,
5+
GatewayMessageReactionRemoveEmojiDispatchData,
6+
GatewayMessageUpdateDispatchData,
57
} from 'discord-api-types/v10';
68

79
import { IRawInfo, IRawInfoUpdateBody } from '@togethercrew.dev/db';

0 commit comments

Comments
 (0)