mirror of
https://github.com/toast-ts/Daggerbot-TS.git
synced 2024-11-17 16:30:58 -05:00
Compare commits
3 Commits
5c0f238531
...
65baaef569
Author | SHA1 | Date | |
---|---|---|---|
|
65baaef569 | ||
|
165c0bf159 | ||
|
11fcbdcad2 |
@ -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\`\`\``));
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
}
|
@ -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}`)
|
||||
|
@ -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':'')
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user