1
0
mirror of https://github.com/toast-ts/Daggerbot-TS.git synced 2024-11-18 04:40:59 -05:00

Compare commits

..

3 Commits

Author SHA1 Message Date
Toast
11d7a8dde9
Merge 8b541cbed3 into d6d66c5c52 2024-02-15 07:43:40 +11:00
toast-ts
d6d66c5c52 Attempt to fix the 'RanIntoHumor' that's been broken under the radar. 2024-02-15 07:38:50 +11:00
toast-ts
40c7e27b6c Update PostgreSQL image 2024-02-13 17:40:19 +11:00
3 changed files with 43 additions and 37 deletions

View File

@ -7,7 +7,7 @@ services:
- 6379:6379/tcp
db:
container_name: postgres-master
image: postgres:16.1-alpine3.19
image: postgres:16.2-alpine3.19
restart: unless-stopped
ports:
- 5432:5432/tcp

View File

@ -8,7 +8,7 @@ services:
- 6379:6379/tcp
db-slave:
container_name: postgres-slave
image: postgres:16.1-alpine3.19
image: postgres:16.2-alpine3.19
restart: unless-stopped
ports:
- 5432:5432/tcp

View File

@ -9,10 +9,14 @@ import {FSData} from 'src/interfaces';
import {requestServerData, mpModuleDisabled, refreshTimerSecs, playtimeStat} from '../modules/MPModule.js';
async function fetchData(client:TClient, interaction:Discord.ChatInputCommandInteraction, serverName:string):Promise<FSData|Discord.InteractionResponse> {
const db = await client.MPServer.findInCache();
const data = await requestServerData(client, db.find(x=>x.serverName === serverName));
if (!data) return interaction.reply('Ran into a '+RanIntoHumor+' while trying to retrieve server data, please try again later.');
return data.dss as FSData;
try {
const db = await client.MPServer.findInCache();
const data = await requestServerData(client, db.find(x=>x.serverName === serverName));
return data.dss as FSData;
} catch {
Logger.console('error', 'MPDB', 'Function failed - fetchData');
return interaction.reply('Ran into a '+RanIntoHumor()+' while trying to retrieve server data, please try again later.');
}
}
const logPrefix = 'MPDB';
@ -42,27 +46,30 @@ export default class MP {
const canvas = await new CanvasBuilder().generateGraph(PDArr.slice(-120), 'players');
const players:string[] = [];
let embedColor:Discord.ColorResolvable;
switch (true){
case DSS?.slots?.used === DSS?.slots.capacity:
embedColor = client.config.embedColorRed;
break;
case DSS?.slots?.used > 8:
embedColor = client.config.embedColorYellow;
break;
default:
embedColor = client.config.embedColorGreen;
}
for (const player of DSS.slots.players.filter(x=>x.isUsed)) players.push(playtimeStat(player))
let attachmentName:string = 'MPModule.jpg';
await interaction.reply({embeds:[new client.embed()
.setTitle(DSS.server?.name.length > 0 ? DSS.server.name : 'Offline')
.setColor(embedColor)
.setDescription(DSS?.slots?.used < 1 ? '*Nobody is playing*' : players.join('\n\n'))
.setImage(`attachment://${attachmentName}`)
.setAuthor({name: `${DSS.slots.used}/${DSS.slots.capacity}`})
.setFooter({text: `Current time: ${('0'+Math.floor((DSS?.server.dayTime/3600/1000))).slice(-2)}:${('0'+Math.floor((DSS?.server.dayTime/60/1000)%60)).slice(-2)}`})
], files: [new client.attachment(canvas.toBuffer('image/jpeg'), {name: attachmentName})]})
try {
switch (true){
case DSS?.slots?.used === DSS?.slots?.capacity:
embedColor = client.config.embedColorRed;
break;
case DSS?.slots?.used > 8:
embedColor = client.config.embedColorYellow;
break;
default:
embedColor = client.config.embedColorGreen;
}
for (const player of DSS.slots.players.filter(x=>x.isUsed)) players.push(playtimeStat(player))
let attachmentName:string = 'MPModule.jpg';
await interaction.reply({embeds:[new client.embed()
.setTitle(DSS.server?.name.length > 0 ? DSS.server.name : 'Offline')
.setColor(embedColor)
.setDescription(DSS?.slots?.used < 1 ? '*Nobody is playing*' : players.join('\n\n'))
.setImage(`attachment://${attachmentName}`)
.setAuthor({name: `${DSS.slots?.used}/${DSS.slots?.capacity}`})
.setFooter({text: `Current time: ${('0'+Math.floor((DSS?.server.dayTime/3600/1000))).slice(-2)}:${('0'+Math.floor((DSS?.server.dayTime/60/1000)%60)).slice(-2)}`})
], files: [new client.attachment(canvas.toBuffer('image/jpeg'), {name: attachmentName})]});
} catch {}
},
details: async()=>{
const DSS = await fetchData(client, interaction, choiceSelector) as FSData;
@ -71,26 +78,25 @@ export default class MP {
const server = db.find(x=>x.serverName === choiceSelector);
const dEmbed = new client.embed().setColor(client.config.embedColor).setAuthor({name: 'Crossplay server'}).setDescription(MessageTool.concatMessage(
`**Name:** \`${DSS?.server.name.length > 0 ? DSS.server.name : '\u200b'}\``,
`**Name:** \`${DSS.server?.name.length > 0 ? DSS.server.name : '\u200b'}\``,
'**Password:** `mf4700`',
`**Map:** \`${DSS.server.mapName.length > 0 ? DSS.server.mapName : 'No map'}\``,
`**Map:** \`${DSS.server?.mapName.length > 0 ? DSS.server.mapName : 'No map'}\``,
`**Mods:** [Click here](http://${server.ip}/mods.html) **|** [Direct link](http://${server.ip}/all_mods_download?onlyActive=true)`,
'**Filters:** [Click here](https://discord.com/channels/468835415093411861/468835769092669461/926581585938120724)',
`Please see <#${channels.serverInfo}> for more additional information and rules.`
));
if (DSS.server.name.length < 1) dEmbed.setFooter({text: 'Server is currently offline'});
await interaction.reply({embeds: [dEmbed]})
if (DSS.server?.name.length < 1) dEmbed.setFooter({text: 'Server is currently offline'});
DSS.server ? await interaction.reply({embeds: [dEmbed]}) : null;
},
status: async()=>{
const DSS = await fetchData(client, interaction, choiceSelector) as FSData;
if (!DSS) return console.log('Endpoint failed - status');
if (DSS.server.name.length > 0) {
await interaction.reply({embeds: [new client.embed().setColor(client.config.embedColor).addFields(
{name: 'Name', value: `\`${DSS?.server.name}\``},
{name: 'Players', value: `${DSS.slots.used}/${DSS.slots.capacity}`},
{name: 'Map', value: DSS?.server.mapName}
).setFooter({text: `Version: ${DSS?.server.version} | Time: ${`${('0'+Math.floor((DSS?.server.dayTime/3600/1000))).slice(-2)}:${('0'+Math.floor((DSS?.server.dayTime/60/1000)%60)).slice(-2)}`}`})]})
} else return interaction.reply('Server is currently offline.')
DSS.server ? await interaction.reply({embeds: [new client.embed().setColor(client.config.embedColor).addFields(
{name: 'Name', value: DSS.server?.name?.length < 1 ? '*`Offline`*' : `\`${DSS?.server?.name}\``},
{name: 'Players', value: `${DSS?.slots.used}/${DSS?.slots.capacity}`},
{name: 'Map', value: DSS?.server.mapName}
).setFooter({text: `Version: ${DSS?.server?.version} | Time: ${`${('0'+Math.floor((DSS?.server.dayTime/3600/1000))).slice(-2)}:${('0'+Math.floor((DSS?.server.dayTime/60/1000)%60)).slice(-2)}`}`})]}) : null
},
pallets: async()=>{
const DSS = await fetchData(client, interaction, choiceSelector) as FSData;