summary refs log tree commit diff
path: root/src/util/message_interceptors/plural_tooling/PluralCommandInterceptor.ts
blob: 13c7b45eb7e8c12feb47d7955f60594e5894f885 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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.content += ' (ephemeral, interceptor: PluralCommandInterceptor)';
            //prevent sending via gateway and storing:
            result.message.id = "0"; // this is implied by `result.cancel = true`, we're setting it for the following emitEvent
            await emitEvent({
                event: "MESSAGE_CREATE",
                //channel_id: ctx.opts.channel_id,
                user_id: ctx.opts.author_id,
                data: result.message.toJSON(),
            } as MessageCreateEvent);
        }

        return result;
    }

}