Sync broccolini-bot: rename from zammad, docs in docs/, security gitignore, remove zammad deps
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -9,7 +9,7 @@ const {
|
||||
EmbedBuilder
|
||||
} = require('discord.js');
|
||||
const { mongoose } = require('./db-connection');
|
||||
const { CONFIG, ZAMMAD, GAME_NAME_TO_KEY } = require('./config');
|
||||
const { CONFIG, GAME_NAME_TO_KEY } = require('./config');
|
||||
const {
|
||||
getCleanBody,
|
||||
extractRawEmail,
|
||||
@@ -19,14 +19,12 @@ const {
|
||||
getFormattedDate
|
||||
} = require('./utils');
|
||||
const { getGmailClient } = require('./services/gmail');
|
||||
const { createZammadTicket, updateZammadUserDiscordId } = require('./services/zammad');
|
||||
const { getNextTicketNumber, saveZammadId, checkTicketLimits, pickTicketCategoryId, createEmailTicketAsThread } = require('./services/tickets');
|
||||
const { getNextTicketNumber, checkTicketLimits, pickTicketCategoryId, createEmailTicketAsThread } = require('./services/tickets');
|
||||
const { getEmailRouting } = require('./services/guildSettings');
|
||||
const { logError } = require('./services/debugLog');
|
||||
|
||||
const Ticket = mongoose.model('Ticket');
|
||||
const Transcript = mongoose.model('Transcript');
|
||||
const User = mongoose.model('User');
|
||||
|
||||
/**
|
||||
* Poll Gmail for unread primary-inbox messages and route them to Discord.
|
||||
@@ -216,66 +214,27 @@ async function poll(client) {
|
||||
.setStyle(ButtonStyle.Secondary)
|
||||
);
|
||||
|
||||
const embed = new EmbedBuilder().setColor(CONFIG.EMBED_COLOR_OPEN).addFields({
|
||||
name: 'Ticket Info',
|
||||
value:
|
||||
`**Name:** ${sName}\n` +
|
||||
`**Email:** ${sEmail}\n` +
|
||||
`**Date:** ${getFormattedDate()}\n` +
|
||||
`**Game:** ${detectedGame}\n` +
|
||||
`**Subject:** ${subject || 'No subject'}`
|
||||
});
|
||||
const welcomeEmbed = new EmbedBuilder()
|
||||
.setDescription(CONFIG.TICKET_WELCOME_MESSAGE)
|
||||
.setColor(CONFIG.EMBED_COLOR_INFO);
|
||||
const ticketInfoEmbed = new EmbedBuilder()
|
||||
.setColor(CONFIG.EMBED_COLOR_INFO)
|
||||
.addFields({
|
||||
name: 'Ticket Info',
|
||||
value:
|
||||
`**Name:** ${sName}\n` +
|
||||
`**Email:** ${sEmail}\n` +
|
||||
`**Date:** ${getFormattedDate()}\n` +
|
||||
`**Game:** ${detectedGame}\n` +
|
||||
`**Subject:** ${subject || 'No subject'}`
|
||||
});
|
||||
|
||||
await ticketChan.send({
|
||||
content: `<@&${CONFIG.ROLE_ID_TO_PING}>`,
|
||||
embeds: [embed],
|
||||
embeds: [welcomeEmbed, ticketInfoEmbed],
|
||||
components: [buttons]
|
||||
});
|
||||
|
||||
// Look up website User by email for discordID
|
||||
let discordIdFromUser = null;
|
||||
try {
|
||||
const websiteUser = await User.findOne({ email: sEmail.toLowerCase() }).select('discordID').lean();
|
||||
if (websiteUser?.discordID) discordIdFromUser = websiteUser.discordID;
|
||||
} catch (_) { /* ignore */ }
|
||||
|
||||
// Create Zammad ticket
|
||||
try {
|
||||
const zammadTicket = await createZammadTicket({
|
||||
subject,
|
||||
body: firstBody,
|
||||
email: sEmail,
|
||||
name: sName,
|
||||
gameName: detectedGame,
|
||||
gameKey: gameKey,
|
||||
group: ZAMMAD.EMAIL_GROUP
|
||||
});
|
||||
|
||||
if (zammadTicket?.id) {
|
||||
await saveZammadId(email.data.threadId, zammadTicket.id);
|
||||
}
|
||||
|
||||
if (zammadTicket?.customer_id && discordIdFromUser) {
|
||||
try {
|
||||
await updateZammadUserDiscordId(zammadTicket.customer_id, discordIdFromUser);
|
||||
} catch (zErr) {
|
||||
console.error('Zammad user discord_id update failed (add discord_id on User in Object Manager?):', zErr.response?.data || zErr.message);
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('--- ZAMMAD API ERROR DETAILS ---');
|
||||
if (e.response) {
|
||||
console.error(`Status: ${e.response.status}`);
|
||||
console.error('Response Data:', JSON.stringify(e.response.data, null, 2));
|
||||
console.error('Headers:', e.response.headers);
|
||||
} else if (e.request) {
|
||||
console.error('No response received. Request details:', e.request);
|
||||
} else {
|
||||
console.error('Error setting up request:', e.message);
|
||||
}
|
||||
console.error('--------------------------------');
|
||||
}
|
||||
|
||||
// On reopen, link previous transcripts
|
||||
if (isReopened) {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user