summary refs log tree commit diff
path: root/src/util
diff options
context:
space:
mode:
authorTheArcaneBrony <myrainbowdash949@gmail.com>2023-02-19 19:55:28 +0100
committerTheArcaneBrony <myrainbowdash949@gmail.com>2023-02-19 19:55:43 +0100
commit506954f3dfb855bba9cc5515536c874dc7d0a5b5 (patch)
tree0ff6d01844cdeee846ef11c392e2a0e7b8d36378 /src/util
parentAdd .idea to gitignore (diff)
downloadserver-506954f3dfb855bba9cc5515536c874dc7d0a5b5.tar.xz
Add basic message interceptor framework
Signed-off-by: TheArcaneBrony <myrainbowdash949@gmail.com>
Diffstat (limited to '')
-rw-r--r--src/util/entities/Message.ts2
-rw-r--r--src/util/index.ts1
-rw-r--r--src/util/interfaces/MessageOptions.ts15
-rw-r--r--src/util/interfaces/index.ts1
-rw-r--r--src/util/message_interceptors/IMessageInterceptor.ts15
-rw-r--r--src/util/message_interceptors/index.ts1
-rw-r--r--src/util/message_interceptors/plural_tooling/PluralCommandInterceptor.ts46
7 files changed, 81 insertions, 0 deletions
diff --git a/src/util/entities/Message.ts b/src/util/entities/Message.ts

index fc8c011c..998513f8 100644 --- a/src/util/entities/Message.ts +++ b/src/util/entities/Message.ts
@@ -217,6 +217,8 @@ export class Message extends BaseClass { @Column({ type: "simple-json", nullable: true }) components?: MessageComponent[]; + + ephemeral?: boolean; } export interface MessageComponent { diff --git a/src/util/index.ts b/src/util/index.ts
index a3495a0c..08abacaa 100644 --- a/src/util/index.ts +++ b/src/util/index.ts
@@ -25,3 +25,4 @@ export * from "./dtos/index"; export * from "./schemas"; export * from "./imports"; export * from "./config"; +export * from "./message_interceptors"; diff --git a/src/util/interfaces/MessageOptions.ts b/src/util/interfaces/MessageOptions.ts new file mode 100644
index 00000000..3705e668 --- /dev/null +++ b/src/util/interfaces/MessageOptions.ts
@@ -0,0 +1,15 @@ +import { Attachment, Embed, MessageCreateSchema, MessageType } from "@fosscord/util*"; + +export interface MessageOptions extends MessageCreateSchema { + id?: string; + type?: MessageType; + pinned?: boolean; + author_id?: string; + webhook_id?: string; + application_id?: string; + embeds?: Embed[]; + channel_id?: string; + attachments?: Attachment[]; + edited_timestamp?: Date; + timestamp?: Date; +} \ No newline at end of file diff --git a/src/util/interfaces/index.ts b/src/util/interfaces/index.ts
index fa259ce1..96a0e9c2 100644 --- a/src/util/interfaces/index.ts +++ b/src/util/interfaces/index.ts
@@ -21,3 +21,4 @@ export * from "./Presence"; export * from "./Interaction"; export * from "./Event"; export * from "./Status"; +export * from "./MessageOptions"; \ No newline at end of file diff --git a/src/util/message_interceptors/IMessageInterceptor.ts b/src/util/message_interceptors/IMessageInterceptor.ts new file mode 100644
index 00000000..35b9dd12 --- /dev/null +++ b/src/util/message_interceptors/IMessageInterceptor.ts
@@ -0,0 +1,15 @@ +import { Message, MessageOptions } from "@fosscord/util"; + +export interface IMessageInterceptor { + execute(ctx: MessageInterceptorContext): Promise<MessageInterceptResult>; +} + +export class MessageInterceptResult { + cancel: boolean; + message: Message; +} + +export class MessageInterceptorContext { + message: Message; + opts: MessageOptions; +} \ No newline at end of file diff --git a/src/util/message_interceptors/index.ts b/src/util/message_interceptors/index.ts new file mode 100644
index 00000000..db64e5b3 --- /dev/null +++ b/src/util/message_interceptors/index.ts
@@ -0,0 +1 @@ +export * from "./IMessageInterceptor"; \ No newline at end of file diff --git a/src/util/message_interceptors/plural_tooling/PluralCommandInterceptor.ts b/src/util/message_interceptors/plural_tooling/PluralCommandInterceptor.ts new file mode 100644
index 00000000..ac6bb153 --- /dev/null +++ b/src/util/message_interceptors/plural_tooling/PluralCommandInterceptor.ts
@@ -0,0 +1,46 @@ +import { + emitEvent, + IMessageInterceptor, Message, + MessageCreateEvent, MessageDeleteEvent, MessageFlags, + MessageInterceptorContext, + MessageInterceptResult, MessageTypes +} from "@fosscord/util"; + +export class PluralCommandInterceptor implements IMessageInterceptor { + async execute(ctx: MessageInterceptorContext): Promise<MessageInterceptResult> { + let result = new MessageInterceptResult(); + result.cancel = false; + result.message = ctx.message; + + if(ctx.message.content?.toLowerCase().startsWith("p;")) { + console.log("[PluralCommandInterceptor] Plural command prefix detected, cancelling message send. Content: ", ctx.message.content) + result.cancel = true; + } + + + if(result.cancel) { + /*await emitEvent({ + event: "MESSAGE_DELETE", + channel_id: ctx.message.channel_id, + data: { + id: ctx.message.id, + channel_id: ctx.message.channel_id, + guild_id: ctx.message.guild_id + }, + } as MessageDeleteEvent);*/ + //result.message.flags = String((BigInt(ctx.message.flags ?? "0")) | MessageTypes.); + // @ts-ignore + result.message.ephemeral = true; + result.message.content += ' (ephemeral?)'; + /*await emitEvent({ + event: "MESSAGE_CREATE", + //channel_id: ctx.opts.channel_id, + user_id: ctx.opts.author_id, + data: ctx.message.toJSON(), + } as MessageCreateEvent);*/ + } + + return result; + } + +} \ No newline at end of file