Untitled

 avatar
unknown
typescript
2 years ago
5.7 kB
34
Indexable
import {
    client
} from '../index.js'

import {
    PermissionsBitField
} from 'discord.js'

export async function dashboardserverlist(req: any, res: any) {

    res.setHeader(

        "Cache-Control",

        "no-store, no-cache, must-revalidate, proxy-revalidate"

    );

    res.setHeader("Pragma", "no-cache");

    res.setHeader("Expires", "0");

    res.setHeader("Surrogate-Control", "no-store");



    if (

        req.cookies?.access_token?.toLowerCase() === "undefined" ||

        req.cookies?.access_token?.toLowerCase() === "null"

    ) {

        res.clearCookie("access_token");

        console.log("empty cookie deleting");

    }

    const accessToken = req.cookies?.access_token;

    if (accessToken) {

        const expirationTime = new Date(accessToken.expires); // Retrieve the expiration time from the cookie

        const currentTime = new Date(); // Get the current time

        if (currentTime > expirationTime) {

            // Cookie has expired

            // Perform necessary actions (e.g., clear the expired cookie)

            res.clearCookie(accessToken);

            console.log("cookie expired deleting");

        }

    }



    if (!accessToken) {

        return res.redirect(`/api/discord/login/`);

    } else {




        let guilds: any = undefined;

        let error: any = undefined;

        try {

            const response = await fetch(

                "https://discord.com/api/v9/users/@me/guilds",

                {

                    headers: {

                        Authorization: `Bearer ${accessToken}`,

                    },

                }

            );

            if (response.ok) {

                guilds = await response.json();

            } else {

                const erroror: any = await response.json();

                error = erroror.message;

            }

        } catch (errorrr) {

            error = errorrr;

        }

        let guildsthere: boolean = false;

        let filteredguilds: any = [];

        let sessionguild = []

        if (guilds) {

            guildsthere = true;

            const fetchGuildsPromises = guilds.map(async (guild) => {

                try {

                    const bitPermissions = new PermissionsBitField(guild.permissions);

                    console.log(bitPermissions);

                    let adminperms =

                        bitPermissions.has(PermissionsBitField.Flags.ManageGuild) ||

                        bitPermissions.has(PermissionsBitField.Flags.Administrator);

                    if (guild.owner) {

                        adminperms = true;

                    }



                    let fetchedguild = false



                    try {

                        fetchedguild = (await client.guilds.get(guild.id)) ? true : false; // client.guilds.cache.get(guild.id) || await client.guilds.fetch(guild.id);

                    } catch (e: any) {

                        if (e.code === 10004) {

                            // Ignore "Unknown Guild" error

                            console.log("bot not in this server ", guild.id);

                            // Error occurred while processing guild

                        } else {

                            console.log(e)

                        }

                    }

                    if (adminperms) {

                        console.log(guild.name);

                        function generateServerIconAbbreviation(serverName) {

                            // Split the server name into words

                            const words = serverName.split(" ");

                            // Extract the first letter from each word

                            const abbreviation = words

                                .map(word => word.charAt(0))

                                .join("")

                                .toUpperCase();

                            return abbreviation;

                        }



                        const guildWithIcon = {



                            id: guild.id,

                            name: guild.name,

                            icon: guild.icon

                                ?
                                `https://cdn.discordapp.com/icons/${guild.id}/${guild.icon}.png`

                                :
                                false,

                            present: false,

                            shortname: generateServerIconAbbreviation(guild.name),

                        };

                        if (fetchedguild) {

                            guildWithIcon.present = true

                        }

                        // output: true

                        sessionguild.push(guild)

                        filteredguilds.push(guildWithIcon);

                    }

                } catch (err: any) {



                    console.error(err.stack);



                }

            }); //

            await Promise.all(fetchGuildsPromises);

        }

        req.session.guilds = sessionguild

        if (!guilds || guilds.length === 0) {

            guildsthere = false;

        }

        console.log("guildsthere", guildsthere);

        console.log(filteredguilds);



        if (error) console.error(error);

        try {



            return res.render("./dashboard/dashboard.ejs", {

                error: error,

                guildsthere: guildsthere,

                servers: filteredguilds,



            });

        } catch (e: any) {

            console.log(e);

            console.log(JSON.stringify(e));

            res.send(

                `Error 

            )}`

            );

        }



    }



}
Editor is loading...