aboutsummaryrefslogtreecommitdiff
path: root/events/ready.js
blob: a830353c9848564ae1f49ea66ae43d28dad68b38 (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
82
83
84
85
86
87
88
89
90
91
92
93
94
const { ActivityType } = require("discord.js");
const fs = require('fs')
const path = require("path");
const { EmbedBuilder } = require("discord.js");
let db = require("../src/db")
let settings = require('../src/settings')
let config_loc = __filename+".json"
const llog = require('../src/logg')

module.exports = {
    name : "ready",
    config_loc : config_loc,
    async main (client,Discord){
        await db._raw.sync()
        let config = JSON.parse(fs.readFileSync(config_loc))
        client.once("ready", async () => {

            //preload
            global.channels = {}
            for(let guild of Object.keys(settings.preloads)){
                let mem = Object.fromEntries(await client.guilds.cache.get(guild).members.fetch())
                //console.log(Object.keys(mem))

                for(let chan of Object.keys(settings.preloads[guild])){
                    let t_add = client.guilds.cache.get(guild).channels.cache.get(chan)
                    if(t_add==null)
                        llog.error("failed to load "+chan+" from "+guild+", skipping");
                    else
                        global.channels[settings.preloads[guild][chan].name] = t_add;

                    
                }
            }
            //end

            //register slash/user commands
            let passed = 0;
            let failed = 0;
            client.guilds.cache.forEach((g)=>{
                if(settings["allowed-servers"].includes(g.id)){
                    g.commands.set(global.s_commands).catch((e)=>{
                        llog.error("unable to load commands for " + g.id + "\n\n****\n")
                        llog.error(e)
                    })
                    passed++;
                } else {
                    failed++;
                }
            })
            llog.log("loaded "+global.s_commands.length+" slash commands for "+passed+" guilds, and denied "+failed+" guilds")
            //done w/ slash commands
            
            llog.log("online!")
            function set_pres() {
                client.user.setPresence({
                    activities: [{ name: config.status.value, type: ActivityType[config.type.value] }]
                });
            }
            set_pres()
            setInterval(set_pres,36000)
            setInterval(async()=>{
                //timed messages
                let timed = await db.Timed_Message.findAll();
                let cur = new Date()
                for(let t of timed){
                    let delay = parseInt(t.delay)
                    if(t.last_message_time!='null')
                        t.last_message_time = parseInt(t.last_message_time)
                    //console.log(new Date(parseInt(t.last_message_time)),(new Date(t.last_message_time)).getTime(),delay)
                    if(t.last_message_time=='null'||cur.getTime()-(new Date(t.last_message_time)).getTime()>delay){
                        
                        let gu = await client.guilds.fetch(t.guild)
                        let channel = await gu.channels.fetch(t.channel)
                        if(t.embed){
                            let embed = new EmbedBuilder()
                                .setDescription(t.message)
                                .setColor(t.embed_color)
                            channel.send({embeds:[embed]})
                        } else {
                            channel.send(t.message)
                        }
                        //console.log(new Date(t.last_message_time).getTime(),(new Date(t.last_message_time)).getTime()+delay)
                        if(t.last_message_time=='null')
                            db.Timed_Message.update({last_message_time : cur.getTime().toString()},{ where: {id: t.id}})
                        else
                            db.Timed_Message.update({last_message_time : (new Date((new Date(t.last_message_time)).getTime()+delay)).getTime().toString()},{ where: {id: t.id}})
                    }
                }
                //done w/ timed messages
            },config.timed_interval.value)
        })

    },
}