Update bot

Took 2 hours 17 minutes
This commit is contained in:
2021-03-15 09:32:14 +01:00
parent e76ad758b8
commit 6102599e5d
201 changed files with 26670 additions and 87 deletions

207
index.js
View File

@ -2,7 +2,7 @@
const Discord = require ( "discord.js" );
const config = require ( "./config.json" );
const AntiSpam = require ( "discord-anti-spam" );
const mySQL = require( "mysql" );
const mySQL = require( "mysql2" );
// new Discord Client
@ -33,10 +33,13 @@ const antiSpam = new AntiSpam ( {
const con = mySQL.createConnection ( {
host: config.mysqlHost,
user: config.mysqlUsername,
password: config.mysqlPassword
password: config.mysqlPassword,
port: config.mysqlPort,
database: config.mysqlDatabase
} );
let badWords = {}; // 0 => {1:2,}
let error = false;
con.connect(function(err) {
if (err) {
@ -59,7 +62,28 @@ client.on ( "ready", () =>
} ).then ( r =>
{
console.log ( "[INFO] Presence set" );
} );
if( loadAllUp() === false )
{
client.user.setPresence ( {
activity:
{
name: "Error 0",
type: 'PLAYING'
}
} ).then ( r =>
{
console.log ( "[INFO] Error 0 presence shown" );
error = true;
} );
}
} );
@ -85,13 +109,13 @@ client.on ( "message", async ( message ) =>
const notify = new Discord.MessageEmbed ()
.setColor ( "#b30202" )
.setTitle ( "Nachricht gelöscht" )
.setDescription ( `Es wurde eine Nachricht von ${ message.author.toString () } entfernt, da ein dort enthaltenes Wort auf der Blacklist steht.` )
.addField ( 'Warnung', `Mir wurde noch nicht gesagt, wo ich Nachricht wie diese hinschreiben soll.\nDu kannst dies als Administrator mit ".w setNotify" in einem beliebigen Channel setzen.` );
message.channel.send ( notify ).then ( () =>
.setDescription ( `Es wurde eine Nachricht von ${ message.author.toString () } entfernt, da ein dort enthaltenes Wort auf der Blacklist steht.\n\nMir wurde noch nicht gesagt, wo ich Nachricht wie diese hinschreiben soll.\nDu kannst dies als Administrator mit ".w setNotify" in einem beliebigen Channel setzen.` )
message.channel.send( `**Nachricht gelöscht!**\nEs wurde eine Nachricht von ${ message.author.toString () } entfernt, da ein dort enthaltenes Wort auf der Blacklist steht.\n\nÜbrigens, mir wurde noch nicht gesagt, wo ich Nachricht wie diese hinschreiben soll.\nDu kannst dies als Administrator mit ".w setNotify" in einem beliebigen Channel setzen.` ).then ( () =>
{
} ).catch ( () =>
} ).catch ( reason =>
{
console.log ( "[ERROR] Cannot send a message on guild " + message.guild.id + " in channel " + message.channel.id );
console.log ( "[ERROR] Cannot send a message on guild " + message.guild.id + " in channel " + message.channel.id + " " + reason.message );
} );
} else
{
@ -100,7 +124,7 @@ client.on ( "message", async ( message ) =>
.setColor ( "#b30202" )
.setTitle ( "Nachricht gelöscht" )
.setDescription ( `Es wurde eine Nachricht von ${ message.author.toString () } entfernt, da ein dort enthaltenes Wort auf der Blacklist steht.` );
notifyChannel.send ( notify ).then ( () =>
notifyChannel.send ( `Nachricht gelöscht!\nEs wurde eine Nachricht von ${ message.author.toString () } entfernt, da ein dort enthaltenes Wort auf der Blacklist steht.` ).then ( () =>
{
} ).catch ( () =>
{
@ -121,40 +145,54 @@ client.on ( "message", async ( message ) =>
await message.reply ( "mir wurde beigebracht, dass ich mit fremden Leuten nicht reden darf :c" );
return;
}
let notifyChannelID = getNotifyChannel ( message.guild.id );
const commandBody = message.content.slice ( config.prefix.length );
const args = commandBody.split ( ' ' );
const args = commandBody.split ( ' ' ); // 1=> arg
const command = args.shift ().toLowerCase ();
if ( command === "ping" )
{
const timeTaken = Date.now () - message.createdTimestamp;
message.reply ( `Der Ping von mir liegt bei ${ timeTaken }ms.` ).then ( () => {} );
if ( command === "ping" ) {
const timeTaken = Date.now() - message.createdTimestamp;
message.reply(`Der Ping von mir liegt bei ${timeTaken}ms.`).then(() => {
});
}
if ( command === "list" )
if ( command === "list" || command === "auflisten" || command === "liste" || command === "filter" )
{
// Listet alle Wörter des Servers mit indexen auf
let words = listWords( message.guild.id );
if( words === false )
{
await message.reply( `ich konnte deinen Filter nicht abrufen! - Bitte versuche es später erneut :c` );
return;
}
let output = "";
for ( let wordsKey in words )
{
output += `${words[wordsKey]["id"]} | ${words[wordsKey]["word"]}\n`;
output += `${wordsKey}\t | \t${words[wordsKey]}\n`;
}
await message.channel.send ( `Folgende Wörter & Sätze stehen auf der Schwarzen Liste:\nIndex\tWort\n` + output );
}
if ( command === "remove" )
if ( command === "remove" || command === "delete" || command === "del" )
{
if ( args.length >= 2 )
if ( args.length > 0)
{
const index = Number.parseInt ( args[1] );
const index = Number.parseInt ( args[0] );
if ( !isNaN ( index ) )
{
if( deleteWord( message.guild.id, args[0] ) === true )
{
await message.reply( `ich habe Index erfolgreich gelöscht! :D` );
}
else
{
await message.reply( `ich konnte den Index nicht entfernen. Hast du dich vielleicht vertippt?` );
}
} else
{
await message.reply ( `bitte gebe einen Index mit an. ${ config.prefix }delete <index>` )
@ -165,11 +203,18 @@ client.on ( "message", async ( message ) =>
}
}
if ( command === "add" )
if ( command === "add" || command === "hinzufügen" || command === "addword" )
{
if ( args.length >= 2 )
if ( args.length > 0 )
{
addWord ( message.guild.id, args[1] );
if( addWord ( message.guild.id, args[0] ) )
{
await message.reply( `ich habe das Wort oder den Satz erfolgreich zu deinem Filter hinzugefügt! :D` );
}
else
{
await message.reply( `Oopsie! Ich konnte den Filter nicht verändern - Wende dich bitte an den Support!` );
}
} else
{
@ -195,7 +240,8 @@ function createServerEntry( a_ServerID, a_ServerName )
{
if( error )
{
console.log ( `[ERROR] An error occurred while creating a new guild in database` );
console.log ( `[ERROR] An error occurred while creating a new guild in database: ${error.message} ` );
return false;
}
return true;
@ -213,100 +259,93 @@ function checkMessage( a_ServerID, a_Message )
console.log ( `[ERROR] An error occurred while fetching th` )
}
} );*/
if( badWords[a_ServerID].contains( a_Message ) )
{
return true;
for (const badWordsKey in badWords[a_ServerID] ) {
if( a_Message.includes( badWords[a_ServerID][badWordsKey] ) )
{
return true;
}
}
return false;
}
function refreshWords( a_ServerID )
async function refreshWords( a_ServerID )
{
let success = false;
console.log( "[INFO] Loading filter for guild " + a_ServerID )
// Add the word to the database
let query = "SELECT id, word FROM words WHERE guildID = ?";
con.query( query, [ a_ServerID ], function( error, results, fields ) {
if( error )
{
console.log ( `[ERROR] An error occurred while getting filter for guild ${a_ServerID}` );
return false;
}
for (let i = 0; i < results.length; i++ ) {
badWords[a_ServerID][results[i].id] = results[i].word;
}
return true;
} );
return false;
let results = await con.query( query );
badWords[a_ServerID] = {};
for (let i = 0; i < results.length; i++ ) {
badWords[a_ServerID][results[i].id] = results[i].word;
}
return true;
}
function loadAllUp()
async function loadAllUp()
{
console.log( "[INFO] Loading all up..." );
// LOADING ALL UP, can take a while
// Add the word to the database
let query = "SELECT id, guild_id FROM guilds";
con.query( query, function( error, results, fields ) {
if( error )
{
console.log ( `[ERROR] An error occurred while loading all up` );
return false;
}
for (let i = 0; i < results.length; i++) {
refreshWords( results[i].guild_id );
}
return true;
} );
return false;
let [results] = await con.promise().query( query );
for (let i = 0; i < results.length; i++) {
refreshWords( results[i].guild_id );
}
return true;
}
function getNotifyChannel( a_ServerID )
async function getNotifyChannel( a_ServerID )
{
let query = "SELECT notify_channel FROM guilds WHERE guilds.guild_id = ?";
con.query( query, [ a_ServerID ], function( error, results, fields ) {
if( error )
{
console.log ( `[ERROR] An error occurred while fetching the notify channel` )
}
return results.notify_channel;
} );
return 0;
let query = "SELECT id, notify_channel FROM guilds WHERE guilds.guild_id = ?";
let results = await con.query( query, [ a_ServerID ] );
if( results.length < 1 )
{
createServerEntry( a_ServerID );
return getNotifyChannel( a_ServerID );
}
return results.notify_channel;
}
function deleteWord( a_ServerID, a_Index )
// function broken i guess, the console.log is not getting out, so idk what happening
async function deleteWord( a_ServerID, a_Index )
{
// Delete the word out of the database
// Add the word to the database
let success = false;
let query = "DELETE FROM words WHERE id = ? AND guildID = ?";
con.query( query, [ a_Index, a_ServerID ], function( error, results, fields ) {
if( error )
{
console.log ( `[ERROR] An error occurred while inserting a new filter entry` );
return false;
}
return true;
} );
return false;
let results = await con.query( query, [a_Index, a_ServerID] );
refreshWords( a_ServerID );
return true;
}
function addWord( a_ServerID, a_Word )
async function addWord( a_ServerID, a_Word )
{
let success = false;
// Add the word to the database
let query = "INSERT INTO words ( word, guildID ) VALUES ( ?, ? )";
con.query( query, [ a_Word, a_ServerID ], function( error, results, fields ) {
if( error )
{
console.log ( `[ERROR] An error occurred while inserting a new filter entry` );
return false;
}
return true;
} );
return false;
let results = await con.query( query, [ a_Word, a_ServerID ] );
refreshWords( a_ServerID );
return true;
}
function listWords( a_ServerID )
{
return {0:{id:1,word:"huan"},1:{id:2,word:"sinnex"}};
return badWords[a_ServerID];
}