mirror of
https://github.com/toast-ts/Daggerbot-TS.git
synced 2024-11-17 04:10:59 -05:00
some mp improvements and other stuff
This commit is contained in:
parent
604f114e84
commit
3283013caf
@ -3,7 +3,6 @@ import { TClient } from 'src/client';
|
||||
import MPDB from '../models/MPServer';
|
||||
export default {
|
||||
async run(client: TClient, interaction: Discord.ChatInputCommandInteraction<'cached'>){
|
||||
if (interaction.guildId !== client.config.mainServer.id) return interaction.reply({content: 'This command doesn\'t work in this server.', ephemeral: true});
|
||||
if (!interaction.member.roles.cache.has(client.config.mainServer.roles.mpmanager) && !interaction.member.roles.cache.has(client.config.mainServer.roles.bottech) && !interaction.member.roles.cache.has(client.config.mainServer.roles.admin)) return client.youNeedRole(interaction, 'mpmanager');
|
||||
|
||||
MPDB.sync();
|
||||
@ -15,17 +14,12 @@ export default {
|
||||
const Url = await MPDB.findOne({where: {serverId: newServerId}})
|
||||
if (Url.ip && Url.code){return interaction.reply(`${Url.get('ip')}` + '/feed/dedicated-server-stats.json?code=' + `${Url.get('code')}`)}
|
||||
} catch(err) {
|
||||
if (err.name == 'SequelizeDatabaseError'){
|
||||
console.log('MPDB | File doesn\'t exist in database folder, generating one now.')
|
||||
interaction.reply('`MPDB.dat` is being createdm run the command again.')
|
||||
} else {
|
||||
console.log(`MPDB | Error: ${err}`)
|
||||
interaction.reply('Database error:\nTry inserting an URL first.')
|
||||
}
|
||||
interaction.reply('**Database error:**\nTry inserting an URL first.')
|
||||
}
|
||||
} else {
|
||||
const verifyURL = address.match(/feed/)
|
||||
if (!verifyURL) return interaction.reply('Invalid URL, try again.')
|
||||
if (!verifyURL) return interaction.reply('That URL is not a valid `dedicated-server-stats.xml`')
|
||||
const convertURL = address
|
||||
const newURL = convertURL.replace('xml','json').split('/feed/dedicated-server-stats.json?code=')
|
||||
try {
|
||||
@ -33,12 +27,14 @@ export default {
|
||||
const Url = await MPDB.create({
|
||||
serverId: newServerId,
|
||||
ip: newURL[0],
|
||||
code: newURL[1]
|
||||
code: newURL[1],
|
||||
timesUpdated: 0
|
||||
});
|
||||
return interaction.reply(`Successfully set the URL to ${Url.ip}`)
|
||||
} catch(err) {
|
||||
if (err.name == 'SequelizeUniqueConstraintError'){
|
||||
const AffectedRows = await MPDB.update({ip: newURL[0], code: newURL[1]},{where:{serverId: newServerId}});
|
||||
await MPDB.increment('timesUpdated', {where: {serverId: newServerId}});
|
||||
if (AffectedRows){return interaction.reply(`Successfully updated the URL to ${newURL[0]}`)}
|
||||
} else {
|
||||
console.log(err)
|
||||
@ -50,9 +46,8 @@ export default {
|
||||
},
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('url')
|
||||
.setDescription('Update the URL for FSMP functions')
|
||||
.setDescription('View the URL for this server\'s FSMP server or update the URL')
|
||||
.addStringOption((opt)=>opt
|
||||
.setName('address')
|
||||
.setDescription('Insert a \'dedicated-server-stats\' url')
|
||||
.setRequired(false))
|
||||
.setDescription('Insert a \'dedicated-server-stats\' url'))
|
||||
}
|
@ -7,11 +7,12 @@ async function MPdata(client:TClient, interaction:Discord.ChatInputCommandIntera
|
||||
MPDB.sync();
|
||||
const newServerId = interaction.guildId;
|
||||
const ServerURL = await MPDB.findOne({where: { serverId: newServerId }});
|
||||
if (!ServerURL) return interaction.reply(`No gameserver found, please contact <@&${client.config.mainServer.roles.mpmanager}> to add it.`)
|
||||
const DBURL = ServerURL.ip
|
||||
const DBCode = ServerURL.code
|
||||
const verifyURL = DBURL.match(/http/)
|
||||
const completedURL = DBURL + '/feed/dedicated-server-stats.json?code=' + DBCode
|
||||
if (!verifyURL) return interaction.reply(`No gameserver found, please contact <@&${client.config.mainServer.roles.mpmanager}> to update it.`)
|
||||
if (!verifyURL) return interaction.reply(`Invalid gameserver IP, please contact <@&${client.config.mainServer.roles.mpmanager}> to update it.`)
|
||||
|
||||
// Fetch dss
|
||||
try {
|
||||
@ -209,7 +210,7 @@ export default {
|
||||
const Image = new client.attachmentBuilder(img.toBuffer(),{name: 'FSStats.png'})
|
||||
embed1.setImage('attachment://FSStats.png')
|
||||
const FSserver1 = await MPdata(client, interaction, embed1)
|
||||
embed1.setTitle(FSserver1.data.server.name.length == 0 ? 'Offline' : FSserver1?.data.server.name)
|
||||
embed1.setTitle(FSserver1?.data.server.name.length == 0 ? 'Offline' : FSserver1?.data.server.name)
|
||||
.setDescription(`${FSserver1?.data.slots.used}/${FSserver1?.data.slots.capacity}`)
|
||||
.setColor(FSserver1?.data.server.name.length == 0 ? client.config.embedColorRed : client.config.embedColor);
|
||||
FSserver1?.data.slots.players.filter(x=>x.isUsed).forEach(player=>{
|
||||
@ -222,7 +223,7 @@ export default {
|
||||
const FSserver2 = await MPdata(client, interaction, embed2)
|
||||
const DBURL = MPDB.findOne({where: {serverId: interaction.guildId}})
|
||||
embed2.setDescription([
|
||||
`**Server name**: ${FSserver2?.data.server.name.length == 0 ? 'Unknown Server' : `\`${FSserver2.data.server.name}\``}`,
|
||||
`**Server name**: \`Official Daggerwin Game Server\``,
|
||||
'**Password:** `mf4700`',
|
||||
'**Crossplay server**',
|
||||
`**Map:** ${FSserver2.data.server.mapName.length == 0 ? 'Null Island' : FSserver2.data.server.mapName}`,
|
||||
|
@ -6,7 +6,7 @@ export default {
|
||||
if (message.author.bot) return;
|
||||
if (message.channel.type === ChannelType.DM) return;
|
||||
const msgarr = message.content.toLowerCase().split(' ');
|
||||
let automodded: any;
|
||||
let automodded: boolean;
|
||||
|
||||
function onTimeout(){
|
||||
delete client.repeatedMessages[message.author.id]
|
||||
@ -19,7 +19,7 @@ export default {
|
||||
if (client.bannedWords._content.some((x)=>msgarr.includes(x)) && !message.member.roles.cache.has(client.config.mainServer.roles.dcmod) && message.guildId == client.config.mainServer.id && !Whitelist.includes(message.channelId) && client.config.botSwitches.automod){
|
||||
automodded = true;
|
||||
message.delete().catch((err)=>{
|
||||
console.log('bannedWords automod; msg got possibly deleted by another bot or moderator.')
|
||||
console.log('bannedWords automod; msg got possibly deleted by another bot.')
|
||||
})
|
||||
message.channel.send('That word is banned here.').then((x)=>setTimeout(()=>x.delete(), 5000));
|
||||
if (client.repeatedMessages[message.author.id]){
|
||||
@ -58,7 +58,7 @@ export default {
|
||||
if (message.content.toLowerCase().includes('discord.gg/') && !message.member.roles.cache.has(client.config.mainServer.roles.dcmod)) {
|
||||
automodded = true;
|
||||
message.delete().catch((err)=>{
|
||||
console.log('advertisement automod; msg got possibly deleted by another bot or moderator.')
|
||||
console.log('advertisement automod; msg got possibly deleted by another bot.')
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -36,7 +36,7 @@ client.on('ready', async()=>{
|
||||
// Handle errors
|
||||
process.on('unhandledRejection', async(error: Error)=>{
|
||||
console.log(error);
|
||||
(client.channels.resolve(client.config.mainServer.channels.errors) as Discord.TextChannel).send({embeds: [new client.embed().setColor('#420420').setTitle('Error caught!').setDescription(`**Error:** \`${error.message}\`\n\n**Stack:** \`${`${error.stack}`.slice(0, 2500)}\``)]})
|
||||
//(client.channels.resolve(client.config.mainServer.channels.errors) as Discord.TextChannel).send({embeds: [new client.embed().setColor('#420420').setTitle('Error caught!').setDescription(`**Error:** \`${error.message}\`\n\n**Stack:** \`${`${error.stack}`.slice(0, 2500)}\``)]})
|
||||
});
|
||||
process.on('uncaughtException', async(error: Error)=>{
|
||||
console.log(error);
|
||||
@ -62,9 +62,11 @@ setInterval(async()=>{
|
||||
const newServerId = client.config.mainServer.id
|
||||
const ServerURL = MPDB.findOne({where: {serverId: newServerId}})
|
||||
const DBURL = (await ServerURL).ip
|
||||
const DBCode = (await ServerURL).code // vv todo: strip 'http://' from ServerURL
|
||||
const DBCode = (await ServerURL).code
|
||||
const verifyURL = DBURL.match(/http/);
|
||||
const completedURL_DSS = DBURL + '/feed/dedicated-server-stats.json?code=' + DBCode
|
||||
const completedURL_CSG = DBURL + '/feed/dedicated-server-savegame.html?code=' + DBCode + '&file=careerSavegame'
|
||||
if (!verifyURL) return msg.edit({content: 'Invalid gameserver IP, please update!', embeds: null})
|
||||
console.log(DBURL + '\n' + DBCode)
|
||||
try {
|
||||
Server = await client.axios.get(completedURL_DSS, {timeout: 4000})
|
||||
|
@ -9,6 +9,7 @@ class MPDB extends Model<InferAttributes<MPDB>, InferCreationAttributes<MPDB>>{
|
||||
declare serverId: string | null;
|
||||
declare ip: string | null;
|
||||
declare code: string | null;
|
||||
declare timesUpdated: number | null;
|
||||
}
|
||||
MPDB.init({
|
||||
serverId: {
|
||||
@ -24,6 +25,12 @@ MPDB.init({
|
||||
type: DataTypes.STRING,
|
||||
defaultValue: 'Missing Code',
|
||||
allowNull: false
|
||||
},
|
||||
timesUpdated: {
|
||||
type: DataTypes.INTEGER,
|
||||
defaultValue: 0,
|
||||
allowNull: false
|
||||
}
|
||||
}, { sequelize: db, modelName: 'urls', timestamps: false });
|
||||
MPDB.sync();
|
||||
export default MPDB
|
Loading…
Reference in New Issue
Block a user