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

Compare commits

..

1 Commits

Author SHA1 Message Date
Toast
9373424199
Merge 8b541cbed3 into 096d06c9d2 2024-02-13 17:37:58 +11:00
3 changed files with 37 additions and 43 deletions

View File

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

View File

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

View File

@ -9,14 +9,10 @@ import {FSData} from 'src/interfaces';
import {requestServerData, mpModuleDisabled, refreshTimerSecs, playtimeStat} from '../modules/MPModule.js'; import {requestServerData, mpModuleDisabled, refreshTimerSecs, playtimeStat} from '../modules/MPModule.js';
async function fetchData(client:TClient, interaction:Discord.ChatInputCommandInteraction, serverName:string):Promise<FSData|Discord.InteractionResponse> { async function fetchData(client:TClient, interaction:Discord.ChatInputCommandInteraction, serverName:string):Promise<FSData|Discord.InteractionResponse> {
try { const db = await client.MPServer.findInCache();
const db = await client.MPServer.findInCache(); const data = await requestServerData(client, db.find(x=>x.serverName === serverName));
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; 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'; const logPrefix = 'MPDB';
@ -46,30 +42,27 @@ export default class MP {
const canvas = await new CanvasBuilder().generateGraph(PDArr.slice(-120), 'players'); const canvas = await new CanvasBuilder().generateGraph(PDArr.slice(-120), 'players');
const players:string[] = []; const players:string[] = [];
let embedColor:Discord.ColorResolvable; 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))
try { let attachmentName:string = 'MPModule.jpg';
switch (true){ await interaction.reply({embeds:[new client.embed()
case DSS?.slots?.used === DSS?.slots?.capacity: .setTitle(DSS.server?.name.length > 0 ? DSS.server.name : 'Offline')
embedColor = client.config.embedColorRed; .setColor(embedColor)
break; .setDescription(DSS?.slots?.used < 1 ? '*Nobody is playing*' : players.join('\n\n'))
case DSS?.slots?.used > 8: .setImage(`attachment://${attachmentName}`)
embedColor = client.config.embedColorYellow; .setAuthor({name: `${DSS.slots.used}/${DSS.slots.capacity}`})
break; .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)}`})
default: ], files: [new client.attachment(canvas.toBuffer('image/jpeg'), {name: attachmentName})]})
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()=>{ details: async()=>{
const DSS = await fetchData(client, interaction, choiceSelector) as FSData; const DSS = await fetchData(client, interaction, choiceSelector) as FSData;
@ -78,25 +71,26 @@ export default class MP {
const server = db.find(x=>x.serverName === choiceSelector); const server = db.find(x=>x.serverName === choiceSelector);
const dEmbed = new client.embed().setColor(client.config.embedColor).setAuthor({name: 'Crossplay server'}).setDescription(MessageTool.concatMessage( 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`', '**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)`, `**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)', '**Filters:** [Click here](https://discord.com/channels/468835415093411861/468835769092669461/926581585938120724)',
`Please see <#${channels.serverInfo}> for more additional information and rules.` `Please see <#${channels.serverInfo}> for more additional information and rules.`
)); ));
if (DSS.server?.name.length < 1) dEmbed.setFooter({text: 'Server is currently offline'}); if (DSS.server.name.length < 1) dEmbed.setFooter({text: 'Server is currently offline'});
DSS.server ? await interaction.reply({embeds: [dEmbed]}) : null; await interaction.reply({embeds: [dEmbed]})
}, },
status: async()=>{ status: async()=>{
const DSS = await fetchData(client, interaction, choiceSelector) as FSData; const DSS = await fetchData(client, interaction, choiceSelector) as FSData;
if (!DSS) return console.log('Endpoint failed - status'); if (!DSS) return console.log('Endpoint failed - status');
if (DSS.server.name.length > 0) {
DSS.server ? await interaction.reply({embeds: [new client.embed().setColor(client.config.embedColor).addFields( 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: 'Name', value: `\`${DSS?.server.name}\``},
{name: 'Players', value: `${DSS?.slots.used}/${DSS?.slots.capacity}`}, {name: 'Players', value: `${DSS.slots.used}/${DSS.slots.capacity}`},
{name: 'Map', value: DSS?.server.mapName} {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 ).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.')
}, },
pallets: async()=>{ pallets: async()=>{
const DSS = await fetchData(client, interaction, choiceSelector) as FSData; const DSS = await fetchData(client, interaction, choiceSelector) as FSData;