Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/configuration/general.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ export const general: GeneralConfig = {
PREFIX_EMOJI: "🤖",
COMMANDS_DIR: getCommandsDir(),
TEMP_DIR: ensureDirectoryExists(path.join(projectRoot, "assets", "temp")),
CACHE_DIR: ensureDirectoryExists(path.join(projectRoot, "cache")), TIMEOUT_IN_MILLISECONDS_BY_EVENT: 15000,
CACHE_DIR: ensureDirectoryExists(path.join(projectRoot, "cache")),
TIMEOUT_IN_MILLISECONDS_BY_EVENT: 15000,
NUMBERS_HOSTS: process.env.NUMBER_HOST ? JSON.parse(process.env.NUMBER_HOST.replace(/'/g, '"')) : [],
NUMBER_BOT: process.env.NUMBER_BOT ? `${process.env.NUMBER_BOT}@s.whatsapp.net` : "",
OPENAI_API_KEY: process.env.OPENAI_API_KEY,
Expand Down
67 changes: 55 additions & 12 deletions src/utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,25 +19,68 @@ import { logger } from './logger';
let commandCache: ICommandImports | null = null;

export function extractDataFromMessage(baileysMessage: proto.IWebMessageInfo) {
// Extract text from various message types with more robust handling
const textMessage: string =
baileysMessage.message?.conversation! ??
baileysMessage.message?.ephemeralMessage?.message?.conversation!;
baileysMessage.message?.conversation ||
baileysMessage.message?.ephemeralMessage?.message?.conversation ||
'';

const extendedTextMessage: string =
baileysMessage.message?.extendedTextMessage?.text! ??
baileysMessage.message?.ephemeralMessage?.message?.extendedTextMessage
?.text!;
baileysMessage.message?.extendedTextMessage?.text ||
baileysMessage.message?.ephemeralMessage?.message?.extendedTextMessage?.text ||
'';

const imageTextMessage: string =
baileysMessage.message?.imageMessage?.caption! ??
baileysMessage.message?.ephemeralMessage?.message?.videoMessage?.caption!;
baileysMessage.message?.imageMessage?.caption ||
baileysMessage.message?.ephemeralMessage?.message?.imageMessage?.caption ||
'';

const videoTextMessage: string =
baileysMessage.message?.videoMessage?.caption! ??
baileysMessage.message?.ephemeralMessage?.message?.imageMessage?.caption!;

const fullMessage =
textMessage || extendedTextMessage || imageTextMessage || videoTextMessage;
baileysMessage.message?.videoMessage?.caption ||
baileysMessage.message?.ephemeralMessage?.message?.videoMessage?.caption ||
'';

// Handle additional message types that might contain commands
const documentTextMessage: string =
baileysMessage.message?.documentMessage?.caption ||
baileysMessage.message?.ephemeralMessage?.message?.documentMessage?.caption ||
'';

// Handle viewOnce messages
const viewOnceTextMessage: string =
baileysMessage.message?.viewOnceMessage?.message?.imageMessage?.caption ||
baileysMessage.message?.viewOnceMessage?.message?.videoMessage?.caption ||
baileysMessage.message?.viewOnceMessageV2?.message?.imageMessage?.caption ||
baileysMessage.message?.viewOnceMessageV2?.message?.videoMessage?.caption ||
'';

// Handle quoted messages - messages that are replies might contain commands
const quotedTextMessage: string =
baileysMessage.message?.extendedTextMessage?.contextInfo?.quotedMessage?.conversation ||
baileysMessage.message?.extendedTextMessage?.contextInfo?.quotedMessage?.extendedTextMessage?.text ||
'';

// Combine all possible text sources
const fullMessage = textMessage ||
extendedTextMessage ||
imageTextMessage ||
videoTextMessage ||
documentTextMessage ||
viewOnceTextMessage ||
quotedTextMessage;

// Debug logging for message extraction issues
if (!fullMessage && baileysMessage.message) {
logger.debug('Message extraction failed for message type:', {
messageKeys: Object.keys(baileysMessage.message),
remoteJid: baileysMessage?.key?.remoteJid,
messageId: baileysMessage?.key?.id
});
}

if (!fullMessage) {
return {
fullMessage: '',
remoteJid: baileysMessage?.key?.remoteJid,
prefix: '',
isGroup: baileysMessage?.key?.remoteJid?.endsWith('@g.us'),
Expand Down