49 lines
1.7 KiB
JavaScript
49 lines
1.7 KiB
JavaScript
const api = require('../api');
|
|
|
|
module.exports = {
|
|
name: 'inviteCreate',
|
|
async execute(invite) {
|
|
try {
|
|
// Only track invites created by the bot or in channels the bot can access
|
|
const guildId = invite.guild.id;
|
|
|
|
// Check if this invite was created by our bot
|
|
const isBotCreated = invite.inviter && invite.inviter.id === invite.client.user.id;
|
|
|
|
if (isBotCreated) {
|
|
// Add to database if created by bot
|
|
const inviteData = {
|
|
code: invite.code,
|
|
guildId: guildId,
|
|
url: invite.url,
|
|
channelId: invite.channel.id,
|
|
createdAt: invite.createdAt ? invite.createdAt.toISOString() : new Date().toISOString(),
|
|
maxUses: invite.maxUses || 0,
|
|
maxAge: invite.maxAge || 0,
|
|
temporary: invite.temporary || false
|
|
};
|
|
|
|
// Use the API to add the invite to database
|
|
await api.addInvite(inviteData);
|
|
|
|
// Publish SSE event for real-time frontend updates
|
|
const bot = require('..');
|
|
if (bot && bot.publishEvent) {
|
|
bot.publishEvent(guildId, 'inviteCreated', {
|
|
code: invite.code,
|
|
url: invite.url,
|
|
channelId: invite.channel.id,
|
|
maxUses: invite.maxUses || 0,
|
|
maxAge: invite.maxAge || 0,
|
|
temporary: invite.temporary || false,
|
|
createdAt: invite.createdAt ? invite.createdAt.toISOString() : new Date().toISOString()
|
|
});
|
|
}
|
|
}
|
|
// Note: We don't automatically add invites created by other users to avoid spam
|
|
// Only bot-created invites are tracked for the web interface
|
|
} catch (error) {
|
|
console.error('Error handling inviteCreate:', error);
|
|
}
|
|
}
|
|
}; |