diff --git a/breadbot.js b/breadbot.js index 7481906..52266bf 100644 --- a/breadbot.js +++ b/breadbot.js @@ -88,6 +88,28 @@ client.on(Events.GuildCreate, async guild => { } }) +client.on(Events.MessageCreate, async message => { + sqlutil.isChannelRegistered(message.channelId).then(channel_check => { + if(!channel_check) { + sqlutil.registerChannel(message.channel.id, message.channel.guildId, message.channel.name) + } + + sqlutil.isUserRegistered(message.user.id).then(user_check => { + if(!user_check) { + sqlutil.registerUser(message.user.id, message.user.username, message.user.displayName) + } + + sqlutil.registerMessage(message.id, message.channelId, message.user.id, message.content, message.createdAt).then(message_add => { + if(message_add) { + console.log("Message logged") + } else { + console.log("Failed to log message") + } + }) + }) + }) +}) + client.once(Events.ClientReady, c => { console.log(`Ready! Logged in as ${c.user.tag}`); }); diff --git a/utilities/sqlutil.js b/utilities/sqlutil.js index 1ec651d..5e7dca1 100644 --- a/utilities/sqlutil.js +++ b/utilities/sqlutil.js @@ -1,6 +1,8 @@ const mysql = require('mysql') const { mysql_username, mysql_password } = require('../config.json') +// TODO Some of the below functions are unnecessarily repetitious + var connection_pool = null async function buildPool(db_name) { @@ -68,9 +70,105 @@ async function unregisterServer(server_snowflake) { return result } +async function isChannelRegistered(channel_snowflake) { + var resultLength = null + + await connection_pool.query(`SELECT * FROM channels WHERE channel_snowflake = ?;`, [channel_snowflake], (error, results, fields) => { + if (error) { + console.log(error) + } + + console.log(results) + + if(results) { + resultLength = results.length + } else { + resultLength = 0 + } + }) + + return resultLength != 0 +} + +async function registerChannel(channel_snowflake, server_snowflake, channel_name) { + var sql = `INSERT INTO channels VALUES (?, ?, ?);` + var result = null + + await connection_pool.query(sql, [channel_snowflake, server_snowflake, channel_name], (error, results, fields) => { + if (error) { + console.log(error) + + result = false + } else { + result = true + } + }) + + return result +} + +async function isUserRegistered(user_snowflake) { + var resultLength = null + + await connection_pool.query(`SELECT * FROM users WHERE user_snowflake = ?;`, [user_snowflake], (error, results, fields) => { + if (error) { + console.log(error) + } + + console.log(results) + + if(results) { + resultLength = results.length + } else { + resultLength = 0 + } + }) + + return resultLength != 0 +} + +async function registerUser(user_snowflake, user_name, user_displayname) { + var sql = `INSERT INTO users VALUES (?, ?, ?);` + var result = null + + await connection_pool.query(sql, [user_snowflake, user_name, user_displayname], (error, results, fields) => { + if (error) { + console.log(error) + + result = false + } else { + result = true + } + }) + + return result +} + +async function registerMessage(message_snowflake, channel_snowflake, user_snowflake, message_content, message_timestamp) { + var sql = `INSERT INTO users VALUES (?, ?, ?, ?, ?);` + var result = null + + await connection_pool.query(sql, [message_snowflake, channel_snowflake, user_snowflake, message_content, message_timestamp], (error, results, fields) => { + if (error) { + console.log(error) + + result = false + } else { + result = true + } + }) + + return result +} + module.exports = { buildPool, isServerRegistered, registerServer, - unregisterServer + unregisterServer, + isChannelRegistered, + registerChannel, + isUserRegistered, + registerUser, + registerMessage } \ No newline at end of file