Files
open-ticket/src/data/framework/statLoader.ts
T

133 lines
8.8 KiB
TypeScript

import {openticket, api, utilities} from "../../index"
import * as discord from "discord.js"
const stats = openticket.stats
const lang = openticket.languages
export const loadAllStatScopes = async () => {
stats.add(new api.ODStatGlobalScope("openticket:global",utilities.emojiTitle("📊",lang.getTranslation("stats.scopes.global"))))
stats.add(new api.ODStatGlobalScope("openticket:system",utilities.emojiTitle("⚙️",lang.getTranslation("stats.scopes.system"))))
stats.add(new api.ODStatScope("openticket:user",utilities.emojiTitle("📊",lang.getTranslation("stats.scopes.user"))))
stats.add(new api.ODStatScope("openticket:ticket",utilities.emojiTitle("📊",lang.getTranslation("stats.scopes.ticket"))))
stats.add(new api.ODStatScope("openticket:participants",utilities.emojiTitle("👥",lang.getTranslation("stats.scopes.participants"))))
}
export const loadAllStats = async () => {
const generalConfig = openticket.configs.get("openticket:general")
if (!generalConfig) return
const global = stats.get("openticket:global")
if (global){
global.add(new api.ODBasicStat("openticket:tickets-created",10,lang.getTranslation("stats.properties.ticketsCreated"),0))
global.add(new api.ODBasicStat("openticket:tickets-closed",9,lang.getTranslation("stats.properties.ticketsClosed"),0))
global.add(new api.ODBasicStat("openticket:tickets-deleted",8,lang.getTranslation("stats.properties.ticketsDeleted"),0))
global.add(new api.ODBasicStat("openticket:tickets-reopened",7,lang.getTranslation("stats.properties.ticketsReopened"),0))
global.add(new api.ODBasicStat("openticket:tickets-autoclosed",6,lang.getTranslation("stats.properties.ticketsAutoclosed"),0))
global.add(new api.ODBasicStat("openticket:tickets-autodeleted",5,"Tickets Autodeleted",0)) //TODO TRANSLATION!!!
global.add(new api.ODBasicStat("openticket:tickets-claimed",4,lang.getTranslation("stats.properties.ticketsClaimed"),0))
global.add(new api.ODBasicStat("openticket:tickets-pinned",3,lang.getTranslation("stats.properties.ticketsPinned"),0))
global.add(new api.ODBasicStat("openticket:tickets-moved",2,lang.getTranslation("stats.properties.ticketsMoved"),0))
global.add(new api.ODBasicStat("openticket:users-blacklisted",1,lang.getTranslation("stats.properties.usersBlacklisted"),0))
global.add(new api.ODBasicStat("openticket:transcripts-created",0,lang.getTranslation("stats.properties.transcriptsCreated"),0))
}
const system = stats.get("openticket:system")
if (system){
system.add(new api.ODDynamicStat("openticket:startup-date",1,() => {
return lang.getTranslation("params.uppercase.startupDate")+": "+discord.time(openticket.processStartupDate,"f")
}))
system.add(new api.ODDynamicStat("openticket:version",0,() => {
return lang.getTranslation("params.uppercase.version")+": `"+openticket.versions.get("openticket:version").toString()+"`"
}))
}
const user = stats.get("openticket:user")
if (user){
user.add(new api.ODDynamicStat("openticket:name",11,async (scopeId,guild,channel,user) => {
return lang.getTranslation("params.uppercase.name")+": "+discord.userMention(scopeId)
}))
user.add(new api.ODDynamicStat("openticket:role",10,async (scopeId,guild,channel,user) => {
try{
const scopeMember = await guild.members.fetch(scopeId)
if (!scopeMember) return ""
const permissions = await openticket.permissions.getPermissions(scopeMember.user,channel,guild)
if (permissions.type == "developer") return lang.getTranslation("params.uppercase.role")+": 💻 `Developer`" //TODO TRANSLATION!!!
if (permissions.type == "owner") return lang.getTranslation("params.uppercase.role")+": 👑 `Server Owner`" //TODO TRANSLATION!!!
if (permissions.type == "admin") return lang.getTranslation("params.uppercase.role")+": 💼 `Server Admin`" //TODO TRANSLATION!!!
if (permissions.type == "moderator") return lang.getTranslation("params.uppercase.role")+": 🚔 `Moderator Team`" //TODO TRANSLATION!!!
if (permissions.type == "support") return lang.getTranslation("params.uppercase.role")+": 💬 `Support Team`" //TODO TRANSLATION!!!
else return lang.getTranslation("params.uppercase.role")+": 👤 `Member`" //TODO TRANSLATION!!!
}catch{
return ""
}
}))
user.add(new api.ODBasicStat("openticket:tickets-created",8,lang.getTranslation("stats.properties.ticketsCreated"),0))
user.add(new api.ODBasicStat("openticket:tickets-closed",7,lang.getTranslation("stats.properties.ticketsClosed"),0))
user.add(new api.ODBasicStat("openticket:tickets-deleted",6,lang.getTranslation("stats.properties.ticketsDeleted"),0))
user.add(new api.ODBasicStat("openticket:tickets-reopened",5,lang.getTranslation("stats.properties.ticketsReopened"),0))
user.add(new api.ODBasicStat("openticket:tickets-claimed",4,lang.getTranslation("stats.properties.ticketsClaimed"),0))
user.add(new api.ODBasicStat("openticket:tickets-pinned",3,lang.getTranslation("stats.properties.ticketsPinned"),0))
user.add(new api.ODBasicStat("openticket:tickets-moved",2,lang.getTranslation("stats.properties.ticketsMoved"),0))
user.add(new api.ODBasicStat("openticket:users-blacklisted",1,lang.getTranslation("stats.properties.usersBlacklisted"),0))
user.add(new api.ODBasicStat("openticket:transcripts-created",0,lang.getTranslation("stats.properties.transcriptsCreated"),0))
}
const ticket = stats.get("openticket:ticket")
if (ticket){
ticket.add(new api.ODDynamicStat("openticket:name",5,async (scopeId,guild,channel,user) => {
return lang.getTranslation("params.uppercase.ticket")+": "+discord.channelMention(scopeId)
}))
ticket.add(new api.ODDynamicStat("openticket:status",4,async (scopeId,guild,channel,user) => {
const ticket = openticket.tickets.get(scopeId)
if (!ticket) return ""
const closed = ticket.exists("openticket:closed") ? ticket.get("openticket:closed").value : false
return closed ? lang.getTranslation("params.uppercase.status")+": 🔒 `Closed`" : lang.getTranslation("params.uppercase.status")+": 🔓 `Open`" //TODO TRANSLATION!!!
}))
ticket.add(new api.ODDynamicStat("openticket:claimed",3,async (scopeId,guild,channel,user) => {
const ticket = openticket.tickets.get(scopeId)
if (!ticket) return ""
const claimed = ticket.exists("openticket:claimed") ? ticket.get("openticket:claimed").value : false
return claimed ? lang.getTranslation("params.uppercase.claimed")+": 🟢 `Yes`" : lang.getTranslation("params.uppercase.claimed")+": 🔴 `No`"
}))
ticket.add(new api.ODDynamicStat("openticket:pinned",2,async (scopeId,guild,channel,user) => {
const ticket = openticket.tickets.get(scopeId)
if (!ticket) return ""
const pinned = ticket.exists("openticket:pinned") ? ticket.get("openticket:pinned").value : false
return pinned ? lang.getTranslation("params.uppercase.pinned")+": 🟢 `Yes`" : lang.getTranslation("params.uppercase.pinned")+": 🔴 `No`"
}))
ticket.add(new api.ODDynamicStat("openticket:creation-date",1,async (scopeId,guild,channel,user) => {
const ticket = openticket.tickets.get(scopeId)
if (!ticket) return ""
const rawDate = ticket.get("openticket:opened-on").value ?? new Date().getTime()
return lang.getTranslation("params.uppercase.creationDate")+": "+discord.time(new Date(rawDate),"f")
}))
ticket.add(new api.ODDynamicStat("openticket:creator",0,async (scopeId,guild,channel,user) => {
const ticket = openticket.tickets.get(scopeId)
if (!ticket) return ""
const creator = ticket.get("openticket:opened-by").value
return lang.getTranslation("params.uppercase.creator")+": "+ (creator ? discord.userMention(creator) : "`unknown`")
}))
}
const participants = stats.get("openticket:participants")
if (participants){
participants.add(new api.ODDynamicStat("openticket:participants",0,async (scopeId,guild,channel,user) => {
const ticket = openticket.tickets.get(scopeId)
if (!ticket) return ""
const participants = ticket.exists("openticket:participants") ? ticket.get("openticket:participants").value : []
return participants.map((p) => {
return (p.type == "role") ? discord.roleMention(p.id) : discord.userMention(p.id)
}).join("\n")
}))
}
}