aboutsummaryrefslogtreecommitdiff
path: root/src/features/guild/index.js
blob: 7a7307a11295b6c134b294a6cff01a235cae00e6 (plain)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/// <reference types="../../../../CTAutocomplete" />
/// <reference lib="es2015" />
import Feature from "../../featureClass/class";
import { toMessageWithLinks } from "../../utils/utils";
import ToggleSetting from "../settings/settingThings/toggle";
import TextSetting from "../settings/settingThings/textSetting";

class Guild extends Feature {
    constructor() {
        super()
    }

    onEnable() {

        this.bridgeBots = new Set()
        fetch("https://soopy.dev/api/soopyv2/gbots.json").json().then(bots => {
            bots.forEach(b => this.bridgeBots.add(b))
        })

        this.shortenPrefix = new ToggleSetting("Shorten guild message prefix", "from Guild > to G > ", false, "shorten_prefix", this)
        this.guildBot = new TextSetting("Bridge bot ign", "", "", "guild_bot_ign", this, "", false)

        //&r&2Guild > &6[MVP&0++&6] zZzSNOW &e[STAFF]&f: &r@niftynathan7, niftynathan7's weight: 20 087 (#1 198) (Skill: 8 771, Slayer: 1 263, Dungeons: 10 053)  ,.,,,..,.,,.,,,....,,,,,,,,,..,,,,,..,,,..,,,.,,.,,.,..,,....,,....,,..,.&r
        //&r&2Guild > &6[MVP&4++&6] Soopyboo32 &e[STAFF]&f: &rasd&r
        //&r&2Guild > &6[MVP&1++&6] niftynathan7 &e[E]&f: &r@Soopyboo32, Soopyboo32's networth: $8 424 131 866 (#2 592)  ,..,...,....,.,,,....,,,...,,,,,,,..,,.,,..,,.,.,,,.........,.....,,,,.....,..,,...,.,.,...,.,&r
        let ev = this.registerChat(/^&r&2Guild > ([\w\W]+?)&f: &r([\w\W]+)&r/, (player, msg, event) => {
            if (msg.includes("[ITEM:")) return
            if (player.includes(":")) return; //stop people sending weard messages to troll using this

            //player = &6[MVP&0++&6] zZzSNOW &e[STAFF]
            let [_, rank, ign, grank] = player.match(/(&7|&[0-9a-fmnl]\[\w+(?:&[0-9a-fmnl]\+*&[0-9a-fmnl])?\] )(\w+)( &[0-9a-fmnl]\[\w+\])?/)

            cancel(event)

            let message = ""
            if (this.bridgeBots.has(ign) || ign.toLowerCase() === this.guildBot.getValue().toLowerCase()) {
                let [name, other] = msg.split(/ ?[\>\:\»] /g)

                if (other) {
                    message = `&2B${this.shortenPrefix.getValue() ? "" : "ridge"} > &b${name.split(" replying to ").reverse().join(" &7⤷&b ").trim()}&f: ${msg.replace(name, "").replace(/^ ?[\>\:\»] /, "").trim()}`
                } else {
                    if (msg.includes("---------------------------------------------") || msg.includes("You have 60 seconds to accept. Click here to join!")) {
                        return //bridge bot bug
                    }
                    message = `&2B${this.shortenPrefix.getValue() ? "" : "ridge"} > &7⤷&f ${msg.trim()}`
                }
            } else {
                if (msg.match(/^@(\w+?), ([\w\W]+?) \[GBot:([0-9]+)\] [,. ]+$/)) {
                    let [_, name2, reply, gBotId] = msg.match(/^@(\w+?), ([\w\W]+?) \[GBot:([0-9]+)\] [,. ]+$/)
                    fetch("https://soopy.dev/api/botdown/" + gBotId).json().then(m => {
                        let message = new Message(`&2B${this.shortenPrefix.getValue() ? "" : "ridge"} > &b${name2} &7⤷&f `)

                        m.forEach(c => {
                            let component = new TextComponent(c.text)
                            if (c.click) component.setClick(c.click.action, c.click.value)
                            if (c.hover) component.setHover(c.hover.action, c.hover.value)
                            message.addTextComponent(component)
                        })

                        message.chat()
                    })
                    return
                } else {
                    message = `&2G${this.shortenPrefix.getValue() ? "" : "uild"} > ${rank}${ign}${grank || ""}&f: ${msg}`
                }
            }


            toMessageWithLinks(message).chat()
        })
        ev.trigger.triggerIfCanceled(false)
    }

    onDisable() {

    }
}

module.exports = {
    class: new Guild()
}