swapped to a new db locally hosted
This commit is contained in:
@@ -4,40 +4,69 @@ const { readDb } = require('../../backend/db.js');
|
||||
module.exports = {
|
||||
name: Events.GuildMemberAdd,
|
||||
async execute(member) {
|
||||
try {
|
||||
const db = readDb();
|
||||
const settings = db[member.guild.id];
|
||||
try {
|
||||
const api = require('../api');
|
||||
const settings = (await api.getServerSettings(member.guild.id)) || {};
|
||||
|
||||
if (settings && settings.welcomeEnabled && settings.welcomeChannel) {
|
||||
const channel = member.guild.channels.cache.get(settings.welcomeChannel);
|
||||
if (channel) {
|
||||
try {
|
||||
const message = (settings.welcomeMessage || 'Welcome {user} to {server}!').replace('{user}', member.user.toString()).replace('{server}', member.guild.name);
|
||||
await channel.send(message);
|
||||
} catch (error) {
|
||||
console.error(`Could not send welcome message to channel ${settings.welcomeChannel} in guild ${member.guild.id}:`, error);
|
||||
}
|
||||
}
|
||||
}
|
||||
const welcome = {
|
||||
enabled: settings.welcomeEnabled || false,
|
||||
channel: settings.welcomeChannel || '',
|
||||
message: settings.welcomeMessage || 'Welcome {user} to {server}!'
|
||||
};
|
||||
|
||||
if (settings && settings.autorole && settings.autorole.enabled && settings.autorole.roleId) {
|
||||
const role = member.guild.roles.cache.get(settings.autorole.roleId);
|
||||
if (role) {
|
||||
try {
|
||||
// Re-check that role is assignable
|
||||
const botHighest = member.guild.members.me.roles.highest.position;
|
||||
if (role.id === member.guild.id || role.managed || role.position >= botHighest) {
|
||||
console.warn(`Autorole ${role.id} in guild ${member.guild.id} is not assignable (everyone/managed/too high). Skipping.`);
|
||||
return;
|
||||
if (welcome && welcome.enabled && welcome.channel) {
|
||||
const channel = member.guild.channels.cache.get(welcome.channel);
|
||||
if (channel) {
|
||||
try {
|
||||
const message = (welcome.message).replace('{user}', member.user.toString()).replace('{server}', member.guild.name);
|
||||
await channel.send(message);
|
||||
} catch (error) {
|
||||
console.error(`Could not send welcome message to channel ${welcome.channel} in guild ${member.guild.id}:`, error);
|
||||
}
|
||||
await member.roles.add(role);
|
||||
} catch (error) {
|
||||
console.error(`Could not assign autorole in guild ${member.guild.id}:`, error);
|
||||
}
|
||||
}
|
||||
|
||||
const autorole = settings.autorole || {};
|
||||
if (autorole && autorole.enabled && autorole.roleId) {
|
||||
const role = member.guild.roles.cache.get(autorole.roleId);
|
||||
if (role) {
|
||||
try {
|
||||
// Re-check that role is assignable
|
||||
const botHighest = member.guild.members.me.roles.highest.position;
|
||||
if (role.id === member.guild.id || role.managed || role.position >= botHighest) {
|
||||
console.warn(`Autorole ${role.id} in guild ${member.guild.id} is not assignable (everyone/managed/too high). Skipping.`);
|
||||
return;
|
||||
}
|
||||
await member.roles.add(role);
|
||||
} catch (error) {
|
||||
console.error(`Could not assign autorole in guild ${member.guild.id}:`, error);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`Error in guildMemberAdd event for guild ${member.guild.id}:`, error);
|
||||
// fallback to local db
|
||||
try {
|
||||
const db = readDb();
|
||||
const settings = db[member.guild.id];
|
||||
if (settings && settings.welcomeEnabled && settings.welcomeChannel) {
|
||||
const channel = member.guild.channels.cache.get(settings.welcomeChannel);
|
||||
if (channel) {
|
||||
try {
|
||||
const message = (settings.welcomeMessage || 'Welcome {user} to {server}!').replace('{user}', member.user.toString()).replace('{server}', member.guild.name);
|
||||
await channel.send(message);
|
||||
} catch (innerErr) { /* ignore */ }
|
||||
}
|
||||
}
|
||||
if (settings && settings.autorole && settings.autorole.enabled && settings.autorole.roleId) {
|
||||
const role = member.guild.roles.cache.get(settings.autorole.roleId);
|
||||
if (role) {
|
||||
try { await member.roles.add(role); } catch (innerErr) { /* ignore */ }
|
||||
}
|
||||
}
|
||||
} catch (inner) {
|
||||
// ignore fallback errors
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`Error in guildMemberAdd event for guild ${member.guild.id}:`, error);
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -5,39 +5,37 @@ module.exports = {
|
||||
name: Events.GuildMemberRemove,
|
||||
async execute(member) {
|
||||
try {
|
||||
const db = readDb();
|
||||
const settings = db[member.guild.id];
|
||||
const api = require('../api');
|
||||
const settings = (await api.getServerSettings(member.guild.id)) || {};
|
||||
const leave = { enabled: settings.leaveEnabled || false, channel: settings.leaveChannel || '', message: settings.leaveMessage || '{user} has left the server.' };
|
||||
|
||||
if (settings && settings.leaveEnabled && settings.leaveChannel) {
|
||||
let channel = member.guild.channels.cache.get(settings.leaveChannel);
|
||||
if (!channel) {
|
||||
if (leave && leave.enabled && leave.channel) {
|
||||
const channel = member.guild.channels.cache.get(leave.channel);
|
||||
if (channel) {
|
||||
try {
|
||||
channel = await member.guild.channels.fetch(settings.leaveChannel);
|
||||
} catch (err) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (channel && channel.isTextBased && channel.isTextBased()) {
|
||||
try {
|
||||
const me = member.guild.members.me;
|
||||
const perms = channel.permissionsFor(me);
|
||||
if (!perms || !perms.has('ViewChannel') || !perms.has('SendMessages')) {
|
||||
return;
|
||||
}
|
||||
|
||||
const userMention = member.user ? (member.user.toString ? member.user.toString() : member.user.tag) : 'A user';
|
||||
const message = (settings.leaveMessage || '{user} has left the server.').replace('{user}', userMention).replace('{server}', member.guild.name);
|
||||
const message = (leave.message).replace('{user}', member.user.toString());
|
||||
await channel.send(message);
|
||||
} catch (error) {
|
||||
console.error(`Could not send leave message to channel ${settings.leaveChannel} in guild ${member.guild.id}:`, error);
|
||||
console.error(`Could not send leave message to channel ${leave.channel} in guild ${member.guild.id}:`, error);
|
||||
}
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`Error in guildMemberRemove event for guild ${member.guild.id}:`, error);
|
||||
// fallback to local db
|
||||
try {
|
||||
const db = readDb();
|
||||
const settings = db[member.guild.id];
|
||||
if (settings && settings.leaveEnabled && settings.leaveChannel) {
|
||||
const channel = member.guild.channels.cache.get(settings.leaveChannel);
|
||||
if (channel) {
|
||||
try {
|
||||
const message = (settings.leaveMessage || '{user} has left the server.').replace('{user}', member.user.toString());
|
||||
await channel.send(message);
|
||||
} catch (innerErr) { /* ignore */ }
|
||||
}
|
||||
}
|
||||
} catch (inner) { /* ignore */ }
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -5,11 +5,15 @@ module.exports = {
|
||||
name: 'clientReady',
|
||||
once: true,
|
||||
async execute(client) {
|
||||
console.log('ECS - Full Stack Bot Online!');
|
||||
|
||||
const guilds = client.guilds.cache.map(guild => guild.id);
|
||||
for (const guildId of guilds) {
|
||||
await deployCommands(guildId);
|
||||
const guildIds = client.guilds.cache.map(guild => guild.id);
|
||||
if (guildIds.length > 0) {
|
||||
// Deploy commands for all guilds in parallel, but only log a single summary
|
||||
try {
|
||||
await Promise.all(guildIds.map(id => deployCommands(id)));
|
||||
console.log(`🔁 Refreshed application commands for ${guildIds.length} guild(s)`);
|
||||
} catch (e) {
|
||||
console.error('Error refreshing application commands:', e && e.message ? e.message : e);
|
||||
}
|
||||
}
|
||||
|
||||
const activities = [
|
||||
@@ -26,5 +30,8 @@ module.exports = {
|
||||
client.user.setActivity(activity.name, { type: activity.type, url: activity.url });
|
||||
activityIndex = (activityIndex + 1) % activities.length;
|
||||
}, 3000);
|
||||
|
||||
// Signal that startup is complete
|
||||
console.log('✅ ECS - Full Stack Bot Online!');
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user