Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ model discordBotGuild {
isDeleted Boolean @default(false)
discordBotChannels discordBotChannel[]
discordBotRoles discordBotRole[]
discordBotInvites discordBotInvite[]
}

enum DiscordBotRoleType {
Expand Down Expand Up @@ -204,6 +205,7 @@ model discordBotChannel {
guildId String
discordBotGuild discordBotGuild @relation(fields: [guildId], references: [guildId])
discordBotMessages discordBotMessage[]
discordBotInvites discordBotInvite[]
}

enum DiscordBotMessageType {
Expand All @@ -223,3 +225,17 @@ model discordBotMessage {

@@unique([channelId, type, version], name: "channelId_type_version_unique_constraint")
}

model discordBotInvite {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
isDeprecated Boolean @default(false)
code String
guildId String
discordBotGuild discordBotGuild @relation(fields: [guildId], references: [guildId])
channelId String
discordBotChannel discordBotChannel @relation(fields: [channelId], references: [channelId])

@@unique([guildId, code], name: "guildId_code_unique_constraint")
}
2 changes: 2 additions & 0 deletions src/domain/discord/bot/discordBot.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { DiscordGuildUtilService } from './utils/db/discordGuildUtilService';
import { PrismaModule } from '../../../non-domain/prisma/prisma.module';
import { DiscordBotService } from './discordBot.service';
import { DiscordBotController } from './discordBot.controller';
import { DiscordBotInviteUtilService } from './utils/db/discordBotInviteUtilService';

@Module({
imports: [PrismaModule],
Expand All @@ -18,6 +19,7 @@ import { DiscordBotController } from './discordBot.controller';
DiscordBotGuildUtilService,
DiscordBotMessageUtilService,
DiscordBotRoleUtilService,
DiscordBotInviteUtilService,
DiscordGuildUtilService,
DiscordBotService,
],
Expand Down
4 changes: 4 additions & 0 deletions src/domain/discord/bot/discordBot.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import { DiscordBotMessageUtilService } from './utils/db/discordBotMessageUtilSe
import { DiscordBotRoleUtilService } from './utils/db/discordBotRoleUtilService';
import { DiscordGuildUtilService } from './utils/db/discordGuildUtilService';
import { PermissionFlagsBits } from 'discord-api-types/v10';
import { DiscordBotInviteUtilService } from './utils/db/discordBotInviteUtilService';

@Injectable()
export class DiscordBotService implements OnModuleInit {
Expand All @@ -43,6 +44,7 @@ export class DiscordBotService implements OnModuleInit {
private readonly discordBotGuildUtilService: DiscordBotGuildUtilService,
private readonly discordBotMessageUtilService: DiscordBotMessageUtilService,
private readonly discordBotRoleUtilService: DiscordBotRoleUtilService,
private readonly discordBotInviteUtilService: DiscordBotInviteUtilService,
private readonly discordGuildUtilService: DiscordGuildUtilService,
) {
this.client = new Client({
Expand Down Expand Up @@ -188,6 +190,7 @@ export class DiscordBotService implements OnModuleInit {
this.discordBotRoleUtilService,
this.discordBotChannelUtilService,
this.discordBotMessageUtilService,
this.discordBotInviteUtilService,
);
} catch (e) {
console.error(e);
Expand Down Expand Up @@ -227,6 +230,7 @@ export class DiscordBotService implements OnModuleInit {
this.discordBotRoleUtilService,
this.discordBotChannelUtilService,
this.discordBotMessageUtilService,
this.discordBotInviteUtilService,
);
} catch (e) {
console.error(e);
Expand Down
15 changes: 9 additions & 6 deletions src/domain/discord/bot/events/clientReady.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@ import {
sendButtonMessage,
sunscreenMessageVersion,
} from '../utils/botUtils';
import { DiscordBotMessageUtilService } from 'src/domain/discord/bot/utils/db/discordBotMessageUtilService';
import { DiscordBotGuildUtilService } from 'src/domain/discord/bot/utils/db/discordBotGuildUtilService';
import { DiscordBotChannelUtilService } from 'src/domain/discord/bot/utils/db/discordBotChannelUtilService';
import { DiscordBotRoleUtilService } from 'src/domain/discord/bot/utils/db/discordBotRoleUtilService';
import { DiscordAccountUtilService } from 'src/domain/discord/bot/utils/db/discordAccountUtilService';
import { DiscordGuildUtilService } from 'src/domain/discord/bot/utils/db/discordGuildUtilService';
import { DiscordBotMessageUtilService } from '../utils/db/discordBotMessageUtilService';
import { DiscordBotGuildUtilService } from '../utils/db/discordBotGuildUtilService';
import { DiscordBotChannelUtilService } from '../utils/db/discordBotChannelUtilService';
import { DiscordBotRoleUtilService } from '../utils/db/discordBotRoleUtilService';
import { DiscordAccountUtilService } from '../utils/db/discordAccountUtilService';
import { DiscordGuildUtilService } from '../utils/db/discordGuildUtilService';
import { DiscordBotInviteUtilService } from '../utils/db/discordBotInviteUtilService';

export async function clientReady(
client: Client,
Expand All @@ -20,6 +21,7 @@ export async function clientReady(
discordBotRoleUtilService: DiscordBotRoleUtilService,
discordBotChannelUtilService: DiscordBotChannelUtilService,
discordBotMessageUtilService: DiscordBotMessageUtilService,
discordBotInviteUtilService: DiscordBotInviteUtilService,
) {
console.log('clientReady');
const oldVersionMessages =
Expand Down Expand Up @@ -92,6 +94,7 @@ export async function clientReady(
discordBotRoleUtilService,
discordBotChannelUtilService,
discordBotMessageUtilService,
discordBotInviteUtilService,
);
}
}
15 changes: 9 additions & 6 deletions src/domain/discord/bot/events/guildCreate.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import { Guild } from 'discord.js';
import { initializeGuild } from '../utils/botUtils';
import { DiscordBotGuildUtilService } from 'src/domain/discord/bot/utils/db/discordBotGuildUtilService';
import { DiscordBotChannelUtilService } from 'src/domain/discord/bot/utils/db/discordBotChannelUtilService';
import { DiscordBotRoleUtilService } from 'src/domain/discord/bot/utils/db/discordBotRoleUtilService';
import { DiscordAccountUtilService } from 'src/domain/discord/bot/utils/db/discordAccountUtilService';
import { DiscordGuildUtilService } from 'src/domain/discord/bot/utils/db/discordGuildUtilService';
import { DiscordBotMessageUtilService } from 'src/domain/discord/bot/utils/db/discordBotMessageUtilService';
import { DiscordBotGuildUtilService } from '../utils/db/discordBotGuildUtilService';
import { DiscordBotChannelUtilService } from '../utils/db/discordBotChannelUtilService';
import { DiscordBotRoleUtilService } from '../utils/db/discordBotRoleUtilService';
import { DiscordAccountUtilService } from '../utils/db/discordAccountUtilService';
import { DiscordGuildUtilService } from '../utils/db/discordGuildUtilService';
import { DiscordBotMessageUtilService } from '../utils/db/discordBotMessageUtilService';
import { DiscordBotInviteUtilService } from '../utils/db/discordBotInviteUtilService';

export async function guildCreate(
guild: Guild,
Expand All @@ -15,6 +16,7 @@ export async function guildCreate(
discordBotRoleUtilService: DiscordBotRoleUtilService,
discordBotChannelUtilService: DiscordBotChannelUtilService,
discordBotMessageUtilService: DiscordBotMessageUtilService,
discordBotInviteUtilService: DiscordBotInviteUtilService,
) {
console.log('guildCreate');
console.log(JSON.stringify(guild));
Expand All @@ -31,5 +33,6 @@ export async function guildCreate(
discordBotRoleUtilService,
discordBotChannelUtilService,
discordBotMessageUtilService,
discordBotInviteUtilService,
);
}
32 changes: 25 additions & 7 deletions src/domain/discord/bot/utils/botUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {
Guild,
GuildMember,
GuildMemberManager,
Invite,
Message,
MessageActionRowComponentData,
Role,
Expand All @@ -26,15 +27,16 @@ import {
APIMessageActionRowComponent,
} from 'discord-api-types/v10';
import { MessageActionRowComponentBuilder } from '@discordjs/builders';
import { DiscordBotGuildUtilService } from 'src/domain/discord/bot/utils/db/discordBotGuildUtilService';
import { DiscordBotRoleUtilService } from 'src/domain/discord/bot/utils/db/discordBotRoleUtilService';
import { DiscordBotChannelUtilService } from 'src/domain/discord/bot/utils/db/discordBotChannelUtilService';
import { DiscordBotMessageUtilService } from 'src/domain/discord/bot/utils/db/discordBotMessageUtilService';
import { DiscordGuildUtilService } from 'src/domain/discord/bot/utils/db/discordGuildUtilService';
import { DiscordAccountUtilService } from 'src/domain/discord/bot/utils/db/discordAccountUtilService';
import { DiscordBotGuildUtilService } from './db/discordBotGuildUtilService';
import { DiscordBotRoleUtilService } from './db/discordBotRoleUtilService';
import { DiscordBotChannelUtilService } from './db/discordBotChannelUtilService';
import { DiscordBotMessageUtilService } from './db/discordBotMessageUtilService';
import { DiscordGuildUtilService } from './db/discordGuildUtilService';
import { DiscordAccountUtilService } from './db/discordAccountUtilService';
import * as process from 'process';
import { capitalizeFirstLetter } from 'src/domain/discord/utils';
import { capitalizeFirstLetter } from '../../utils';
import { Color } from 'src/types';
import { DiscordBotInviteUtilService } from './db/discordBotInviteUtilService';

export enum DiscordBotMessageType {
SUNSCREEN_BUTTON = 'sunscreenButton',
Expand Down Expand Up @@ -259,6 +261,7 @@ export async function initializeGuild(
discordBotRoleUtilService: DiscordBotRoleUtilService,
discordBotChannelUtilService: DiscordBotChannelUtilService,
discordBotMessageUtilService: DiscordBotMessageUtilService,
discordBotInviteUtilService: DiscordBotInviteUtilService,
) {
async function _getNonBotGuildMemberIds(
members: GuildMemberManager,
Expand Down Expand Up @@ -342,6 +345,16 @@ export async function initializeGuild(
};
}

async function _createInviteCode(guild: Guild, channelId: Snowflake) {
const invite: Invite = await guild.invites.create(channelId);
console.log(invite);
await discordBotInviteUtilService.createOne(
guildId,
channelId,
invite.code,
);
}

const guildId = guild.id as string;
let discordBotGuild = await discordBotGuildUtilService.getOneByGuildId(
guildId,
Expand All @@ -368,13 +381,18 @@ export async function initializeGuild(

// create channel & add a record
const channel = await _createReadOnlySunscreenChannel(guild);

// send message & add a record
await sendButtonMessage(
channel,
discordBotRoleUtilService,
discordBotMessageUtilService,
);

// create invite code
await _createInviteCode(guild, channel.id as Snowflake);

// assign the role
const memberIds: string[] = await _getNonBotGuildMemberIds(guild.members);
const accountIdsByUserId =
await discordAccountUtilService.getAccountIdsByUserId(
Expand Down
22 changes: 22 additions & 0 deletions src/domain/discord/bot/utils/db/discordBotInviteUtilService.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import Table from '@prisma/client';
import { PrismaService } from '../../../../../non-domain/prisma/prisma.service';
import { Injectable } from '@nestjs/common';

@Injectable()
export class DiscordBotInviteUtilService {
constructor(private readonly ps: PrismaService) {}

async createOne(
guildId: string,
channelId: string,
code: string,
): Promise<Table.discordBotInvite> {
return this.ps.discordBotInvite.create({
data: {
guildId,
channelId,
code,
},
});
}
}