aXises/fortniteBot

View on GitHub
src/command/modules/mrfortnite/FortniteTextEvent.ts

Summary

Maintainability
A
0 mins
Test Coverage
import * as Discord from "discord.js";
import { AccessLevel } from "user/AccessLevel";
import TriggerableCommand from "command/TriggerableCommand";
import Trigger from "action/Trigger";
import Action from "action/Action";
import OnMessageState from "state/OnMessageState";
import DBGuildPropertySchema from "database/schemas/DBGuildPropertySchema";
import { CommandUtil } from "utils/CommandUtil";

export default class FortniteTextEvent extends TriggerableCommand {
    public constructor() {
        super(AccessLevel.UNREGISTERED);
    }

    public setCustomTrigger(): Trigger {
        return new Trigger(async (state: OnMessageState): Promise<boolean> => {
            const m: Discord.Message = state.getHandle();
            return m.content.replace(/\s/g, "").toLowerCase().search("fortnite") !== -1
                && !CommandUtil.isResponseTrigger(state.getHandle().content, 2)
                && m.content[0] !== "!";
        });
    }

    public setCustomAction(): Action {
        return new Action(async (state: OnMessageState): Promise<boolean> => {
            const guild = state.getHandle().guild;
            const doc = await DBGuildPropertySchema.getGuildById(guild.id);
            if (!doc) {
                state.getHandle().channel.send("<@!455679698610159616> fortnite?");
            } else {
                let targetString = "OwO someone said fortnite? ";
                for (const target of doc.targets) {
                    targetString += "<@!" + target + "> ";
                }
                targetString += doc.targets.length === 0 ? "<@!455679698610159616> fortnite?" : "fortnite?";
                state.getHandle().channel.send(targetString);
            }
            return false;
        });
    }
}