mirror of
https://github.com/toast-ts/Daggerbot-TS.git
synced 2024-11-18 00:31:00 -05:00
Improvements
This commit is contained in:
parent
61f14d055c
commit
de5fec7079
@ -6,7 +6,7 @@ import Formatters from '../helpers/Formatters.js';
|
|||||||
import GitHub from '../helpers/GitHub.js';
|
import GitHub from '../helpers/GitHub.js';
|
||||||
import TClient from '../client.js';
|
import TClient from '../client.js';
|
||||||
import util from 'node:util';
|
import util from 'node:util';
|
||||||
import fs from 'node:fs';
|
import fs, { writeFileSync } from 'node:fs';
|
||||||
export default class Developer {
|
export default class Developer {
|
||||||
static run(client: TClient, interaction: Discord.ChatInputCommandInteraction<'cached'>) {
|
static run(client: TClient, interaction: Discord.ChatInputCommandInteraction<'cached'>) {
|
||||||
if (!client.config.whitelist.includes(interaction.user.id)) return MessageTool.youNeedRole(interaction, 'bottech');
|
if (!client.config.whitelist.includes(interaction.user.id)) return MessageTool.youNeedRole(interaction, 'bottech');
|
||||||
@ -102,6 +102,7 @@ export default class Developer {
|
|||||||
if (name) currentActivities[0].name = name;
|
if (name) currentActivities[0].name = name;
|
||||||
if (url) currentActivities[0].url = url;
|
if (url) currentActivities[0].url = url;
|
||||||
client.user.setPresence(client.config.botPresence);
|
client.user.setPresence(client.config.botPresence);
|
||||||
|
writeFileSync(process.argv[2] ?? 'src/config.json', JSON.stringify(client.config, null, 2));
|
||||||
interaction.reply(MessageTool.concatMessage(
|
interaction.reply(MessageTool.concatMessage(
|
||||||
'Presence updated:',
|
'Presence updated:',
|
||||||
`Status: **${client.config.botPresence.status}**`,
|
`Status: **${client.config.botPresence.status}**`,
|
||||||
@ -157,7 +158,7 @@ export default class Developer {
|
|||||||
.setRequired(false)))
|
.setRequired(false)))
|
||||||
.addSubcommand(x=>x
|
.addSubcommand(x=>x
|
||||||
.setName('restart')
|
.setName('restart')
|
||||||
.setDescription('Restart the bot for technical reasons'))
|
.setDescription('Restart the bot for manual changes/technical difficulties'))
|
||||||
.addSubcommand(x=>x
|
.addSubcommand(x=>x
|
||||||
.setName('update')
|
.setName('update')
|
||||||
.setDescription('Pull from repository and restart')
|
.setDescription('Pull from repository and restart')
|
||||||
|
@ -47,13 +47,6 @@ export default class ProhibitedWords {
|
|||||||
]
|
]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
|
||||||
import: async()=>{
|
|
||||||
const file = interaction.options.getAttachment('file', true);
|
|
||||||
if (!file.contentType.match(/application\/json/)) return interaction.reply({ephemeral: true, content: 'This file is not a JSON file!'});
|
|
||||||
const success = await client.prohibitedWords.importWords(file.url);
|
|
||||||
if (success) interaction.reply({ephemeral: true, content: `Successfully imported the list from \`${file.name}\` into the database`});
|
|
||||||
else interaction.reply({ephemeral: true, content: `Failed to import the list from \`${file.name}\` into the database`});
|
|
||||||
}
|
}
|
||||||
} as any)[interaction.options.getSubcommand()]();
|
} as any)[interaction.options.getSubcommand()]();
|
||||||
}
|
}
|
||||||
@ -80,11 +73,4 @@ export default class ProhibitedWords {
|
|||||||
.setName('word')
|
.setName('word')
|
||||||
.setDescription('Remove the specific word from automod\'s prohibitedWords database')
|
.setDescription('Remove the specific word from automod\'s prohibitedWords database')
|
||||||
.setRequired(true)))
|
.setRequired(true)))
|
||||||
.addSubcommand(x=>x
|
|
||||||
.setName('import')
|
|
||||||
.setDescription('Import a JSON file of words into the database')
|
|
||||||
.addAttachmentOption(x=>x
|
|
||||||
.setName('file')
|
|
||||||
.setDescription('The JSON file to import')
|
|
||||||
.setRequired(true)))
|
|
||||||
}
|
}
|
@ -1,6 +1,5 @@
|
|||||||
import DatabaseServer from '../components/DatabaseServer.js';
|
import DatabaseServer from '../components/DatabaseServer.js';
|
||||||
import {Model, DataTypes} from 'sequelize';
|
import {Model, DataTypes} from 'sequelize';
|
||||||
import {get} from 'node:https';
|
|
||||||
|
|
||||||
class prohibitedWords extends Model {
|
class prohibitedWords extends Model {
|
||||||
declare public word: string;
|
declare public word: string;
|
||||||
@ -27,25 +26,6 @@ export class ProhibitedWordsSvc {
|
|||||||
this.model.sync();
|
this.model.sync();
|
||||||
}
|
}
|
||||||
findWord = async(word:string)=>await this.model.findByPk(word);
|
findWord = async(word:string)=>await this.model.findByPk(word);
|
||||||
async importWords(file:string) {
|
|
||||||
const jsonData = await new Promise<string>((resolve, reject)=>{
|
|
||||||
get(file, res=>{
|
|
||||||
let data = '';
|
|
||||||
res.on('data', chunk=>data += chunk);
|
|
||||||
res.on('end', ()=>resolve(data));
|
|
||||||
res.on('error', reject);
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
const data = JSON.parse(jsonData);
|
|
||||||
const dataMapping = data.map((x:string)=>({word: x}));
|
|
||||||
try {
|
|
||||||
await this.model.bulkCreate(dataMapping, {ignoreDuplicates: true});
|
|
||||||
return true;
|
|
||||||
} catch(err) {
|
|
||||||
throw new Error(`Failed to insert words into Postgres database: ${err.message}`)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
getAllWords = async()=>await this.model.findAll();
|
getAllWords = async()=>await this.model.findAll();
|
||||||
insertWord = async(word:string)=>await this.model.create({word: word});
|
insertWord = async(word:string)=>await this.model.create({word: word});
|
||||||
removeWord = async(word:string)=>await this.model.destroy({where: {word: word}})
|
removeWord = async(word:string)=>await this.model.destroy({where: {word: word}})
|
||||||
|
Loading…
Reference in New Issue
Block a user