1
0
mirror of https://github.com/toast-ts/Daggerbot-TS.git synced 2024-11-17 16:30:58 -05:00

Compare commits

...

3 Commits

Author SHA1 Message Date
AnxietyisReal
65baaef569 Refactor the BKL channel selection for a reliable system. 2024-01-17 07:01:01 +11:00
AnxietyisReal
165c0bf159 Move player functions into MPModule 2024-01-17 06:45:01 +11:00
AnxietyisReal
11fcbdcad2 Remove unneeded param from fetchers 2024-01-17 06:33:06 +11:00
4 changed files with 41 additions and 42 deletions

View File

@ -14,18 +14,18 @@ export default class HookMgr {
this.webhookId = webhookId;
}
protected channelFetch = async(client:TClient, channel:ChannelList)=>await client.channels.fetch(config.dcServer.channels[channel]) as Discord.TextChannel;
protected async fetch(client:TClient, channel:ChannelList, webhookId:Discord.Snowflake) {
const hookInstance = await (await this.channelFetch(client, channel)).fetchWebhooks().then(x=>x.find(y=>y.id===webhookId));
protected channelFetch = async(channel:ChannelList)=>await this.client.channels.fetch(config.dcServer.channels[channel]) as Discord.TextChannel;
protected async fetch(channel:ChannelList, webhookId:Discord.Snowflake) {
const hookInstance = await (await this.channelFetch(channel)).fetchWebhooks().then(x=>x.find(y=>y.id===webhookId));
if (!hookInstance) throw new Error('[HookManager] Webhook not found.');
return hookInstance;
}
async send(message:string|Discord.MessagePayload|Discord.WebhookMessageCreateOptions) {
const hook = await this.fetch(this.client, this.channel, this.webhookId);
const hook = await this.fetch(this.channel, this.webhookId);
return hook.send(message).catch(err=>(this.client.channels.resolve(config.dcServer.channels.errors) as Discord.TextChannel).send(`Failed to send a webhook message in #${this.channel}:\n\`\`\`\n${err.message}\n\`\`\``));
}
async edit(messageId:Discord.Snowflake, message:string|Discord.MessagePayload|Discord.WebhookMessageEditOptions) {
const hook = await this.fetch(this.client, this.channel, this.webhookId);
const hook = await this.fetch(this.channel, this.webhookId);
return hook.editMessage(messageId, message).catch(err=>(this.client.channels.resolve(config.dcServer.channels.errors) as Discord.TextChannel).send(`Failed to edit a webhook message in #${this.channel}:\n\`\`\`\n${err.message}\n\`\`\``));
}
}

View File

@ -1,26 +0,0 @@
import {FSPlayer} from '../interfaces';
export default class FormatPlayer {
static convertUptime(playTime:number) {
let Minutes:number;
let Hours:number;
let Days:number;
playTime = Math.floor(playTime);
if (playTime >= 60) {
Hours = Math.floor(playTime/60);
Minutes = playTime-Hours*60;
} else Minutes = playTime
if (Hours >= 24) {
Days = Math.floor(Hours/24);
Hours = Hours-Days*24;
}
return (Days > 0 ? Days+' d ':'')+(Hours > 0 ? Hours+' h ':'')+(Minutes > 0 ? Minutes+' m':'')
}
static decoratePlayerIcons(player:FSPlayer) {
let decorator = player.isAdmin ? ':detective:' : '';
decorator += player.name.includes('Toast') ? '<:toast:1132681026662056079>' : '';
return decorator
}
}

View File

@ -110,7 +110,17 @@ export class PunishmentsSvc {
return result;
}
async createModlog(punishment:Punishment) {
const channel = ['kick', 'ban'].includes(punishment.type) ? this.client.config.dcServer.channels.bankick_log : this.client.config.dcServer.channels.logs;
let channel:Discord.TextChannelResolvable;
switch (punishment.type) {
case 'kick':
case 'ban':
channel = this.client.config.dcServer.channels.bankick_log;
break;
default:
channel = this.client.config.dcServer.channels.logs;
console.log('[Punishment] BKL channel doesn\'t seem to exist anymore, falling back to #bot-log.')
break;
}
const embed = new this.client.embed()
.setColor(this.client.config.embedColor)
.setTitle(`${punishment.type[0].toUpperCase() + punishment.type.slice(1)} | Case #${punishment.case_id}`)

View File

@ -2,7 +2,6 @@ import Undici from 'undici';
import Discord from 'discord.js';
import TClient from '../client.js';
import ConfigHelper from '../helpers/ConfigHelper.js';
import FormatPlayer from '../helpers/FormatPlayer.js';
import Logger from '../helpers/Logger.js';
import HookMgr from '../components/HookManager.js';
import {IServer} from '../models/MPServer.js';
@ -121,10 +120,6 @@ async function multifarmWebhook(client:TClient, server:IServer, webhookId:string
})
}
async function storePlayerCount(client:TClient, server:IServer, playerCount:number) {
return await client.MPServer.incrementPlayerCount(server.serverName, playerCount);
}
export async function requestServerData(client:TClient, server:IServer):Promise<{dss:FSData, csg:FSCareerSavegame}|undefined>{
async function retryReqs(url:string) {
// Attempt to reduce the failure rate of the requests before giving up and retrying in next refresh.
@ -156,11 +151,31 @@ export async function requestServerData(client:TClient, server:IServer):Promise<
}
}
export function mpModuleDisabled(client:TClient) {
return new client.embed().setColor(client.config.embedColorInvis).setTitle('MPModule is currently disabled.');
export const mpModuleDisabled =(client:TClient)=>new client.embed().setColor(client.config.embedColorInvis).setTitle('MPModule is currently disabled.');
export const playtimeStat =(player:FSPlayer)=>`**${player.name}${decoratePlayerIcons(player)}**\n${player.uptime < 1 ? 'Just joined' : `Playing for ${convertPlayerUptime(player.uptime)}`}`;
const storePlayerCount = async(client:TClient, server:IServer, playerCount:number)=>await client.MPServer.incrementPlayerCount(server.serverName, playerCount);
function decoratePlayerIcons(player:FSPlayer) {
let decorator = player.isAdmin ? ':detective:' : '';
decorator += player.name.includes('Toast') ? '<:toast:1132681026662056079>' : '';
return decorator
}
export function playtimeStat(player:FSPlayer) {
let uptimeTxt = player.uptime < 1 ? 'Just joined' : `Playing for ${FormatPlayer.convertUptime(player.uptime)}`;
return `**${player.name}${FormatPlayer.decoratePlayerIcons(player)}**\n${uptimeTxt}`
function convertPlayerUptime(playTime:number) {
let Minutes:number;
let Hours:number;
let Days:number;
playTime = Math.floor(playTime);
if (playTime >= 60) {
Hours = Math.floor(playTime/60);
Minutes = playTime-Hours*60;
} else Minutes = playTime
if (Hours >= 24) {
Days = Math.floor(Hours/24);
Hours = Hours-Days*24;
}
return (Days > 0 ? Days+' d ':'')+(Hours > 0 ? Hours+' h ':'')+(Minutes > 0 ? Minutes+' m':'')
}