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

Improvements

This commit is contained in:
toast-ts 2024-01-20 23:13:18 +11:00
parent 2d412c0994
commit 54145161ec
3 changed files with 3 additions and 36 deletions

View File

@ -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')

View File

@ -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)))
} }

View File

@ -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}})