179 lines
8.4 KiB
JavaScript
179 lines
8.4 KiB
JavaScript
|
const mysql = require('mysql');
|
||
|
const db = mysql.createConnection({
|
||
|
host: process.env.DBHOST,
|
||
|
user: process.env.DBUSER,
|
||
|
password: process.env.DBPASS,
|
||
|
database: process.env.DBNAME,
|
||
|
port: process.env.DBPORT
|
||
|
});
|
||
|
|
||
|
module.exports = {
|
||
|
GuildInfo: class {
|
||
|
constructor() {
|
||
|
this.guildId = "";
|
||
|
this.treeName = "";
|
||
|
this.treeHeight = 0;
|
||
|
this.treeMessageId = "";
|
||
|
this.treeChannelId = "";
|
||
|
this.leaderboardMessageId = "";
|
||
|
this.leaderboardChannelId = "";
|
||
|
this.waterMessage = "";
|
||
|
this.waterRoleId = "";
|
||
|
this.fruitMessage = "";
|
||
|
this.fruitRoleId = "";
|
||
|
this.reminderChannelId = "";
|
||
|
this.watchChannelId = "";
|
||
|
this.notificationsEnabled = false;
|
||
|
}
|
||
|
|
||
|
setId(id) {
|
||
|
this.guildId = id;
|
||
|
return this;
|
||
|
}
|
||
|
setName(name) {
|
||
|
this.treeName = name;
|
||
|
return this;
|
||
|
}
|
||
|
setHeight(height) {
|
||
|
this.treeHeight = height;
|
||
|
return this;
|
||
|
}
|
||
|
setTreeMessage(messageId, channelId) {
|
||
|
this.treeMessageId = messageId;
|
||
|
this.treeChannelId = channelId;
|
||
|
return this;
|
||
|
}
|
||
|
setLeaderboardMessage(messageId, channelId) {
|
||
|
this.leaderboardMessageId = messageId;
|
||
|
this.leaderboardChannelId = channelId;
|
||
|
return this;
|
||
|
}
|
||
|
setReminders(waterMessage, fruitMessage, reminderChannelId, watchChannelId, enabled) {
|
||
|
if (waterMessage) this.waterMessage = waterMessage;
|
||
|
if (fruitMessage) this.fruitMessage = fruitMessage;
|
||
|
if (reminderChannelId) this.reminderChannelId = reminderChannelId;
|
||
|
if (watchChannelId) this.watchChannelId = watchChannelId;
|
||
|
if (enabled) this.notificationsEnabled = enabled;
|
||
|
return this;
|
||
|
}
|
||
|
setRoles(waterRoleId, fruitRoleId) {
|
||
|
this.waterRoleId = waterRoleId;
|
||
|
if (fruitRoleId) this.fruitRoleId = fruitRoleId;
|
||
|
return this;
|
||
|
}
|
||
|
queryBuilder(query) {
|
||
|
let queryParts = [];
|
||
|
switch (query) {
|
||
|
case "setAll":
|
||
|
queryParts = [
|
||
|
`INSERT INTO guild_info `,
|
||
|
`(guild_id, `,
|
||
|
`tree_name, `,
|
||
|
`tree_height, `,
|
||
|
`tree_message_id, `,
|
||
|
`tree_channel_id, `,
|
||
|
`leaderboard_message_id, `,
|
||
|
`leaderboard_channel_id, `,
|
||
|
`water_message, `,
|
||
|
`fruit_message, `,
|
||
|
`reminder_channel_id, `,
|
||
|
`watch_channel_id) `,
|
||
|
`VALUES (${db.escape(this.guildId)}, `,
|
||
|
`${db.escape(this.treeName)}, `,
|
||
|
`${db.escape(this.treeHeight)}, `,
|
||
|
`${db.escape(this.treeMessageId)}, `,
|
||
|
`${db.escape(this.treeChannelId)}, `,
|
||
|
`${db.escape(this.leaderboardMessageId)}, `,
|
||
|
`${db.escape(this.leaderboardChannelId)}, `,
|
||
|
`${db.escape(this.waterMessage)}, `,
|
||
|
`${db.escape(this.fruitMessage)}, `,
|
||
|
`${db.escape(this.reminderChannelId)}, `,
|
||
|
`${db.escape(this.watchChannelId)}) `,
|
||
|
`ON DUPLICATE KEY UPDATE tree_name = ${db.escape(this.treeName)}, `,
|
||
|
`tree_height = ${db.escape(this.treeHeight)}, `,
|
||
|
`tree_message_id = ${db.escape(this.treeMessageId)}, `,
|
||
|
`tree_channel_id = ${db.escape(this.treeChannelId)}, `,
|
||
|
`leaderboard_message_id = ${db.escape(this.leaderboardMessageId)}, `,
|
||
|
`leaderboard_channel_id = ${db.escape(this.leaderboardChannelId)}, `,
|
||
|
`water_message = ${db.escape(this.waterMessage)}, `,
|
||
|
`fruit_message = ${db.escape(this.fruitMessage)}, `,
|
||
|
`reminder_channel_id = ${db.escape(this.reminderChannelId)}, `,
|
||
|
`watch_channel_id = ${db.escape(this.watchChannelId)})`
|
||
|
];
|
||
|
return queryParts.join('');
|
||
|
break;
|
||
|
case "setReminders":
|
||
|
queryParts = [
|
||
|
`INSERT INTO guild_info (guild_id, water_message, fruit_message, reminder_channel_id, watch_channel_id, notifications_enabled) VALUES (`,
|
||
|
`${db.escape(this.guildId)},`,
|
||
|
`${db.escape(this.waterMessage)},`,
|
||
|
`${db.escape(this.fruitMessage)},`,
|
||
|
`${db.escape(this.reminderChannelId)},`,
|
||
|
`${db.escape(this.watchChannelId)},`,
|
||
|
`${db.escape(this.notificationsEnabled)}`,
|
||
|
`) ON DUPLICATE KEY UPDATE water_message = ${db.escape(this.waterMessage)}, `,
|
||
|
`fruit_message = ${db.escape(this.fruitMessage)}, `,
|
||
|
`reminder_channel_id = ${db.escape(this.reminderChannelId)}, `,
|
||
|
`watch_channel_id = ${db.escape(this.watchChannelId)},`,
|
||
|
`notifications_enabled = ${db.escape(this.notificationsEnabled)}`
|
||
|
];
|
||
|
return queryParts.join('');
|
||
|
break;
|
||
|
case "setTreeMessage":
|
||
|
queryParts = [
|
||
|
`UPDATE guild_info SET tree_message_id = ${db.escape(this.treeMessageId)}, `,
|
||
|
`tree_channel_id = ${db.escape(this.treeChannelId)}, `,
|
||
|
`WHERE guild_id = ${db.escape(this.guildId)}`
|
||
|
];
|
||
|
return queryParts.join('');
|
||
|
break;
|
||
|
case "setLeaderboardMessage":
|
||
|
queryParts = [
|
||
|
`UPDATE guild_info SET leaderboard_message_id = ${db.escape(this.leaderboardMessageId)}, `,
|
||
|
`leaderboard_channel_id = ${db.escape(this.leaderboardChannelId)}, `,
|
||
|
`WHERE guild_id = ${db.escape(this.guildId)}`
|
||
|
];
|
||
|
return queryParts.join('');
|
||
|
break;
|
||
|
case "setRoles":
|
||
|
if (this.fruitRoleId != "") {
|
||
|
queryParts = [
|
||
|
`INSERT INTO guild_info (`,
|
||
|
`guild_id, water_role_id, fruit_role_id`,
|
||
|
`) VALUES (`,
|
||
|
`${db.escape(this.guildId)}, ${db.escape(this.waterRoleId)}, ${db.escape(this.fruitRoleId)}`,
|
||
|
`) ON DUPLICATE KEY UPDATE water_role_id = ${db.escape(this.waterRoleId)}, `,
|
||
|
`fruit_role_id = ${db.escape(this.fruitRoleId)}`
|
||
|
];
|
||
|
} else {
|
||
|
queryParts = [
|
||
|
`UPDATE guild_info SET water_role_id = ${db.escape(this.waterRoleId)} `,
|
||
|
`WHERE guild_id = ${db.escape(this.guildId)}`
|
||
|
];
|
||
|
}
|
||
|
return queryParts.join('');
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
generateSetupInfo() {
|
||
|
let setupInfoParts = [
|
||
|
`Here is your server's configuration:`,
|
||
|
`Tree Name: ${this.treeName}`,
|
||
|
`Tree Height: ${this.treeHeight}`,
|
||
|
`Tree Channel: <#${this.treeChannelId}>`,
|
||
|
`[Tree Link](https://discord.com/channels/${this.guildId}/${this.treeChannelId}/${this.treeMessageId})`,
|
||
|
`Leaderboard Channel: <#${this.leaderboardChannelId}>`,
|
||
|
`[Leaderboard Link](https://discord.com/channels/${this.guildId}/${this.leaderboardChannelId}/${this.leaderboardMessageId})`,
|
||
|
`Notification Watch Channel: <#${this.watchChannelId}>`,
|
||
|
`Notification Relay Channel: <#${this.reminderChannelId}>`,
|
||
|
`Water Message: ${this.waterMessage}`,
|
||
|
`Fruit Message: ${this.fruitMessage}`,
|
||
|
`Water Role: <@&${this.waterRoleId}>`,
|
||
|
`Fruit Role: <@&${this.fruitRoleId}>`
|
||
|
]
|
||
|
return setupInfoParts.join('\n');
|
||
|
}
|
||
|
}
|
||
|
}
|