From 8baf3791a792f688775c8e76dc684c2745437844 Mon Sep 17 00:00:00 2001 From: briseradius Date: Mon, 13 Feb 2023 16:37:54 +0100 Subject: [PATCH 1/3] feat(discord): first commit lours --- src/discord/bot.gateway.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/discord/bot.gateway.ts b/src/discord/bot.gateway.ts index 00d083a..3f177e8 100644 --- a/src/discord/bot.gateway.ts +++ b/src/discord/bot.gateway.ts @@ -23,6 +23,6 @@ export class BotGateway { this.logger.log(`New member ${member.user.tag} joined!`) // Send a private message to the new member - await member.send("Welcome to the server!") + await member.send("Bienvenu sur le serveur!") } } From 02282855b2314a37c5c81ec250ef88e8413be07a Mon Sep 17 00:00:00 2001 From: briseradius Date: Tue, 14 Feb 2023 17:35:20 +0100 Subject: [PATCH 2/3] feat(discord): add updtmessage cmd Closes #3 --- package-lock.json | 10 +++-- package.json | 4 +- .../migration.sql | 8 ++++ prisma/schema.prisma | 2 +- src/discord/bot.gateway.ts | 12 +++++- src/discord/discord.module.ts | 11 ++++- src/discord/dto/update-message.dto.ts | 11 +++++ src/discord/interfaces/messages.enum.ts | 5 +++ src/discord/update-message.command.ts | 41 +++++++++++++++++++ tsconfig.json | 3 +- 10 files changed, 96 insertions(+), 11 deletions(-) create mode 100644 prisma/migrations/20230214153325_discord_bot_messages_unique/migration.sql create mode 100644 src/discord/dto/update-message.dto.ts create mode 100644 src/discord/interfaces/messages.enum.ts create mode 100644 src/discord/update-message.command.ts diff --git a/package-lock.json b/package-lock.json index 9f4828e..94b0378 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,9 @@ "license": "UNLICENSED", "dependencies": { "@discord-nestjs/common": "^5.1.4", - "@discord-nestjs/core": "^5.2.1", + "@discord-nestjs/core": "^5.3.0", + "@discordjs/builders": "^1.4.0", + "@discordjs/rest": "^1.5.0", "@liaoliaots/nestjs-redis": "^9.0.5", "@nestjs/common": "^9.3.8", "@nestjs/config": "^2.3.1", @@ -1179,9 +1181,9 @@ } }, "node_modules/@discord-nestjs/core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@discord-nestjs/core/-/core-5.2.1.tgz", - "integrity": "sha512-TvjmTm6XD4ar09IJN1calF9P4eF//GvBzXcrBye7SmdYcboF02Zxl7QSZXAgYY7wZkaDZ+vLEMle0rRqJ6ZfhA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@discord-nestjs/core/-/core-5.3.0.tgz", + "integrity": "sha512-eHVzuPCu3EbQyTln+ZEH0/Jwe0xPG7Z1eZV655jZoCSpq7RmvxWcTG/REf3XMSgtYFN27HaXa9vPCsgUOnp9xQ==", "dependencies": { "class-transformer": "0.5.1" }, diff --git a/package.json b/package.json index 0f0bd5e..1572a93 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,9 @@ }, "dependencies": { "@discord-nestjs/common": "^5.1.4", - "@discord-nestjs/core": "^5.2.1", + "@discord-nestjs/core": "^5.3.0", + "@discordjs/builders": "^1.4.0", + "@discordjs/rest": "^1.5.0", "@liaoliaots/nestjs-redis": "^9.0.5", "@nestjs/common": "^9.3.8", "@nestjs/config": "^2.3.1", diff --git a/prisma/migrations/20230214153325_discord_bot_messages_unique/migration.sql b/prisma/migrations/20230214153325_discord_bot_messages_unique/migration.sql new file mode 100644 index 0000000..4b43840 --- /dev/null +++ b/prisma/migrations/20230214153325_discord_bot_messages_unique/migration.sql @@ -0,0 +1,8 @@ +/* + Warnings: + + - A unique constraint covering the columns `[name]` on the table `DiscordBotMessages` will be added. If there are existing duplicate values, this will fail. + +*/ +-- CreateIndex +CREATE UNIQUE INDEX "DiscordBotMessages_name_key" ON "DiscordBotMessages"("name"); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 9e22d3a..c4f5197 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -21,6 +21,6 @@ model Donation { model DiscordBotMessages { id Int @id @default(autoincrement()) createdAt BigInt - name String + name String @unique message String } diff --git a/src/discord/bot.gateway.ts b/src/discord/bot.gateway.ts index 3f177e8..803826c 100644 --- a/src/discord/bot.gateway.ts +++ b/src/discord/bot.gateway.ts @@ -22,7 +22,15 @@ export class BotGateway { async onGuildMemberAdd(member: GuildMember) { this.logger.log(`New member ${member.user.tag} joined!`) - // Send a private message to the new member - await member.send("Bienvenu sur le serveur!") + // Load the bienvenu message from the database + const message = await this.prismaService.discordBotMessages.findFirst({ + where: { name: "WELCOME" } + }) + // Send a set data Base private message to the new member + if (message) { + return await member.send(message.message) + } + // Send a default private message to the new member + await member.send("Bienvenue sur le serveur!") } } diff --git a/src/discord/discord.module.ts b/src/discord/discord.module.ts index cc3559e..be0bd7e 100644 --- a/src/discord/discord.module.ts +++ b/src/discord/discord.module.ts @@ -5,6 +5,7 @@ import { ExtendedConfigService } from "../config/config.service" import { GatewayIntentBits } from "discord.js" import { BotGateway } from "./bot.gateway" import { DatabaseModule } from "../database/database.module" +import { UpdateMessage } from "./update-message.command" @Module({ imports: [ @@ -20,11 +21,17 @@ import { DatabaseModule } from "../database/database.module" GatewayIntentBits.GuildMessageReactions, GatewayIntentBits.GuildMembers ] - } + }, + registerCommandOptions: [ + { + forGuild: "1074690667235790869", + removeCommandsBefore: true + } + ] }) }), DatabaseModule ], - providers: [BotGateway] + providers: [BotGateway, UpdateMessage] }) export class DiscordModule {} diff --git a/src/discord/dto/update-message.dto.ts b/src/discord/dto/update-message.dto.ts new file mode 100644 index 0000000..2a4e731 --- /dev/null +++ b/src/discord/dto/update-message.dto.ts @@ -0,0 +1,11 @@ +import { Choice, Param } from "@discord-nestjs/core" +import { BotMessageEnum } from "../interfaces/messages.enum" + +export class UpdateMessageDto { + @Choice(BotMessageEnum) + @Param({ description: "Message type", required: true }) + type: BotMessageEnum + + @Param({ description: "Message text", required: true }) + text: string +} diff --git a/src/discord/interfaces/messages.enum.ts b/src/discord/interfaces/messages.enum.ts new file mode 100644 index 0000000..7c6f3d0 --- /dev/null +++ b/src/discord/interfaces/messages.enum.ts @@ -0,0 +1,5 @@ +export enum BotMessageEnum { + WELCOME = "WELCOME", + STREAMER_TUTORIAL = "STREAMER_TUTORIAL", + RAPPEL_LIVE = "RAPPEL_LIVE" +} diff --git a/src/discord/update-message.command.ts b/src/discord/update-message.command.ts new file mode 100644 index 0000000..87f9a88 --- /dev/null +++ b/src/discord/update-message.command.ts @@ -0,0 +1,41 @@ +import { Command, Handler, InteractionEvent } from "@discord-nestjs/core" +import { CommandInteraction } from "discord.js" +import { Injectable } from "@nestjs/common" +import { PrismaService } from "../prisma.service" +import { SlashCommandPipe } from "@discord-nestjs/common" +import { UpdateMessageDto } from "./dto/update-message.dto" + +@Command({ + name: "update-message", + description: "Update automatic messages that are sent by the bot" +}) +@Injectable() +export class UpdateMessage { + constructor(private readonly prismaService: PrismaService) {} + @Handler() + async updateMessage( + @InteractionEvent(SlashCommandPipe) payload: UpdateMessageDto, + interaction: CommandInteraction + ): Promise { + // await interaction.reply("ok") + try { + await this.prismaService.discordBotMessages.upsert({ + where: { + name: payload.type + }, + create: { + name: payload.type, + createdAt: new Date().getTime(), + message: payload.text + }, + update: { + message: payload.text + } + }) + + await interaction.reply("Message updated") + } catch (error: any) { + await interaction.reply("Error updating message") + } + } +} diff --git a/tsconfig.json b/tsconfig.json index adb614c..efc026f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,6 +16,7 @@ "noImplicitAny": false, "strictBindCallApply": false, "forceConsistentCasingInFileNames": false, - "noFallthroughCasesInSwitch": false + "noFallthroughCasesInSwitch": false, + "useDefineForClassFields": true } } From 35178dbeb3a46f6b4da303aacab7f02e2e0f2b3f Mon Sep 17 00:00:00 2001 From: briseradius Date: Fri, 17 Feb 2023 16:23:39 +0100 Subject: [PATCH 3/3] feat: remind function bot discord BREAKING CHANGE: add remind stream(not aviable yet) Closes #3 --- package-lock.json | 131 ++++++++++++++++++ package.json | 1 + .../migration.sql | 8 ++ .../20230217120030_maj_dtb/migration.sql | 11 ++ prisma/schema.prisma | 6 + src/discord/RemindStream.ts | 31 +++++ src/discord/add-stream.command.ts | 63 +++++++++ src/discord/discord.module.ts | 5 +- src/discord/dto/add-stream.dto.ts | 9 ++ src/prisma.service.ts | 1 + 10 files changed, 265 insertions(+), 1 deletion(-) create mode 100644 prisma/migrations/20230216101647_add_stream_date_table/migration.sql create mode 100644 prisma/migrations/20230217120030_maj_dtb/migration.sql create mode 100644 src/discord/RemindStream.ts create mode 100644 src/discord/add-stream.command.ts create mode 100644 src/discord/dto/add-stream.dto.ts diff --git a/package-lock.json b/package-lock.json index 94b0378..dd2df34 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,6 +29,7 @@ "helmet": "^6.0.1", "ioredis": "^5.3.1", "is-ci": "^3.0.1", + "pg": "^8.9.0", "prisma": "^4.10.1", "reflect-metadata": "^0.1.13", "rxjs": "^7.8.0" @@ -4126,6 +4127,14 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "node_modules/buffer-writer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", + "engines": { + "node": ">=4" + } + }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -11978,6 +11987,11 @@ "node": ">=6" } }, + "node_modules/packet-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -12084,6 +12098,88 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/pg": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.9.0.tgz", + "integrity": "sha512-ZJM+qkEbtOHRuXjmvBtOgNOXOtLSbxiMiUVMgE4rV6Zwocy03RicCVvDXgx8l4Biwo8/qORUnEqn2fdQzV7KCg==", + "dependencies": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.5.0", + "pg-pool": "^3.5.2", + "pg-protocol": "^1.6.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.5.2.tgz", + "integrity": "sha512-His3Fh17Z4eg7oANLob6ZvH8xIVen3phEZh2QuyrIl4dQSDVEabNducv6ysROKpDNPSD+12tONZVWfSgMvDD9w==", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", + "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/pgpass/node_modules/split2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", + "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "engines": { + "node": ">= 10.x" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -12273,6 +12369,41 @@ "node": ">=4" } }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", diff --git a/package.json b/package.json index 1572a93..4b3b24a 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ "helmet": "^6.0.1", "ioredis": "^5.3.1", "is-ci": "^3.0.1", + "pg": "^8.9.0", "prisma": "^4.10.1", "reflect-metadata": "^0.1.13", "rxjs": "^7.8.0" diff --git a/prisma/migrations/20230216101647_add_stream_date_table/migration.sql b/prisma/migrations/20230216101647_add_stream_date_table/migration.sql new file mode 100644 index 0000000..dc973cf --- /dev/null +++ b/prisma/migrations/20230216101647_add_stream_date_table/migration.sql @@ -0,0 +1,8 @@ +-- CreateTable +CREATE TABLE "StreamDate" ( + "id" SERIAL NOT NULL, + "streamer" TEXT NOT NULL, + "streamHour" BIGINT NOT NULL, + + CONSTRAINT "StreamDate_pkey" PRIMARY KEY ("id") +); diff --git a/prisma/migrations/20230217120030_maj_dtb/migration.sql b/prisma/migrations/20230217120030_maj_dtb/migration.sql new file mode 100644 index 0000000..395366b --- /dev/null +++ b/prisma/migrations/20230217120030_maj_dtb/migration.sql @@ -0,0 +1,11 @@ +/* + Warnings: + + - A unique constraint covering the columns `[streamer]` on the table `StreamDate` will be added. If there are existing duplicate values, this will fail. + +*/ +-- AlterTable +ALTER TABLE "StreamDate" ALTER COLUMN "streamHour" DROP NOT NULL; + +-- CreateIndex +CREATE UNIQUE INDEX "StreamDate_streamer_key" ON "StreamDate"("streamer"); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index c4f5197..3dd1bf9 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -24,3 +24,9 @@ model DiscordBotMessages { name String @unique message String } + +model StreamDate { + id Int @id @default(autoincrement()) + streamer String @unique + streamHour BigInt? + } \ No newline at end of file diff --git a/src/discord/RemindStream.ts b/src/discord/RemindStream.ts new file mode 100644 index 0000000..f300ade --- /dev/null +++ b/src/discord/RemindStream.ts @@ -0,0 +1,31 @@ +import { Injectable } from "@nestjs/common" +import { Cron } from "@nestjs/schedule" +import { Client } from "discord.js" +import { PrismaService } from "../prisma.service" + +@Injectable() +export class RemindStream { + private readonly client: Client + private readonly prismaService: PrismaService + + @Cron("0 1 * * * *") // dtb check every hours + async sendMessage() { + const date = new Date() + const timestamp = Math.floor(date.getTime() / 1000) + const remind = timestamp + 7200 + + // remove 2 hour to the current date + + const data = await this.prismaService.StreamDate.findMany({ + where: { streamHour: remind } + }) + + for (const item of data) { + const user = await this.client.users.fetch(item.streamer) + + if (user === data.streamer) { + user.send("attention tu passe en live a " + data.streamHour + ".") // Replace with your message + } + } + } +} diff --git a/src/discord/add-stream.command.ts b/src/discord/add-stream.command.ts new file mode 100644 index 0000000..64a86cc --- /dev/null +++ b/src/discord/add-stream.command.ts @@ -0,0 +1,63 @@ +import { Injectable } from "@nestjs/common" +import { PrismaService } from "../prisma.service" +import { CommandInteraction } from "discord.js" +import { SlashCommandPipe } from "@discord-nestjs/common" +import { Handler, InteractionEvent } from "@discord-nestjs/core" +import { AddStreamDto } from "./dto/add-stream.dto" + +@Injectable() +export class AddStreamDate { + constructor(private readonly prismaService: PrismaService) {} + @Handler() + async updateMessage( + @InteractionEvent(SlashCommandPipe) payload: AddStreamDto, + interaction: CommandInteraction + ): Promise { + // await interaction.reply("ok") + const dateString = payload.date + const dateRegex = dateString.split(/[\s/]+/) // Split the string into date and time parts + const [day, month, year, hours, minutes] = dateRegex // Destructure the date and time parts + + const timestampStream = new Date(`${year}-${month}-${day}T${hours}:${minutes}:00`).getTime() / 1000 // Create a new Date object and get its timestamp (in seconds) + + try { + await this.prismaService.StreamDate.upsert({ + where: { + name: payload.member + }, + create: { + streamer: payload.member, + streamHour: timestampStream + }, + update: { + streamHour: timestampStream + } + }) + + await interaction.reply("Message updated") + } catch (error: any) { + await interaction.reply("Error updating message") + } + } + + // constructor(private readonly prismaService: PrismaService) {} + // async create(member: GuildMember) { + // await this.prismaService.StreamDate.create({ + // data: { + // streamer: member.user.username + // } + // }) + // } + // async addAllMembers(client: Client) { + // const guild = client.guilds.cache.get("1074690667235790869") + // if (guild) { + // const members = await guild.members.fetch() + // for (const [, member] of members) { + // if (member) { + // await this.create(member) + // } + // } + // console.log(`Added ${members.size} members to the database.`) + // } + // } +} diff --git a/src/discord/discord.module.ts b/src/discord/discord.module.ts index be0bd7e..ef7c6eb 100644 --- a/src/discord/discord.module.ts +++ b/src/discord/discord.module.ts @@ -6,6 +6,9 @@ import { GatewayIntentBits } from "discord.js" import { BotGateway } from "./bot.gateway" import { DatabaseModule } from "../database/database.module" import { UpdateMessage } from "./update-message.command" +import { AddStreamDate } from "./add-stream.command" +import { RemindStream } from "./RemindStream" +//import { AddStream } from "./add-stream.command" @Module({ imports: [ @@ -32,6 +35,6 @@ import { UpdateMessage } from "./update-message.command" }), DatabaseModule ], - providers: [BotGateway, UpdateMessage] + providers: [BotGateway, UpdateMessage, AddStreamDate, RemindStream] }) export class DiscordModule {} diff --git a/src/discord/dto/add-stream.dto.ts b/src/discord/dto/add-stream.dto.ts new file mode 100644 index 0000000..0bb1f60 --- /dev/null +++ b/src/discord/dto/add-stream.dto.ts @@ -0,0 +1,9 @@ +import { Param } from "@discord-nestjs/core" + +export class AddStreamDto { + @Param({ description: "Select a member", required: true }) + member: string + + @Param({ description: "jj/mm/aaaa hh:mm", required: true }) + date: string +} diff --git a/src/prisma.service.ts b/src/prisma.service.ts index 81164a7..4562145 100644 --- a/src/prisma.service.ts +++ b/src/prisma.service.ts @@ -3,6 +3,7 @@ import { PrismaClient } from "@prisma/client" @Injectable() export class PrismaService extends PrismaClient implements OnModuleInit { + [x: string]: any async onModuleInit() { await this.$connect() }