Anti Scammer

by ☘️

17
Raw
const antiscamDbPath = './db/antiscam.json';

if (!fs.existsSync(antiscamDbPath)) {
    fs.writeFileSync(antiscamDbPath, JSON.stringify({ enabled: false, scammers: [] }, null, 2));
}

let antiscamData = JSON.parse(fs.readFileSync(antiscamDbPath));

// ====================================================
        const saveAntiscamData = () => {
            fs.writeFileSync(antiscamDbPath, JSON.stringify(antiscamData, null, 2));
        }

        const normalizeNumber = (number) => {
            return number.replace(/[^0-9]/g, '') + '@s.whatsapp.net';
        }

        const checkScammers = async () => {
            if (!antiscamData.enabled || !isGroup || !isBotAdmins) return;
            
            for (const participant of participants) {
                if (antiscamData.scammers.includes(participant.id)) {
                    await xstbot.groupParticipantsUpdate(from, [participant.id], 'remove');
                    await xstbot.sendMessage(from, { 
                        text: `⚠️ Scammer detected! @${participant.id.split('@')[0]} has been removed from ${groupName}.`,
                        mentions: [participant.id]
                    });
                }
            }
        }

        if (isGroup && m.messageStubType === 27) { // Member added
            await checkScammers();
        }

        if (isGroup && antiscamData.enabled && isBotAdmins) {
            await checkScammers();
        }
// ====================================================
                case 'scammer':
                    if (!isOwner && !isAdmins) {
                        await xstbot.sendMessage(from, { text: 'Only admins can use this command!' });
                        return;
                    }
                    if (!args[0]) {
                        await xstbot.sendMessage(from, { text: 'Usage: .scammer on/off' });
                        return;
                    }
                    if (args[0].toLowerCase() === 'on') {
                        antiscamData.enabled = true;
                        saveAntiscamData();
                        await xstbot.sendMessage(from, { text: 'Anti-scam feature enabled!' });
                    } else if (args[0].toLowerCase() === 'off') {
                        antiscamData.enabled = false;
                        saveAntiscamData();
                        await xstbot.sendMessage(from, { text: 'Anti-scam feature disabled!' });
                    } else {
                        await xstbot.sendMessage(from, { text: 'Invalid option! Use: .scammer on/off' });
                    }
                    break;

                case 'addscam':
                    if (!isOwner && !isAdmins) {
                        await xstbot.sendMessage(from, { text: 'Only admins can use this command!' });
                        return;
                    }
                    if (!text) {
                        await xstbot.sendMessage(from, { text: 'Usage: .addscam <phone_number>' });
                        return;
                    }
                    const scamNumber = normalizeNumber(text);
                    if (!antiscamData.scammers.includes(scamNumber)) {
                        antiscamData.scammers.push(scamNumber);
                        saveAntiscamData();
                        await xstbot.sendMessage(from, { text: `Number ${text} added to scammer list!` });
                        if (isGroup && isBotAdmins && participants.some(p => p.id === scamNumber)) {
                            await xstbot.groupParticipantsUpdate(from, [scamNumber], 'remove');
                            await xstbot.sendMessage(from, { 
                                text: `⚠️ Scammer @${scamNumber.split('@')[0]} has been removed from ${groupName}!`,
                                mentions: [scamNumber]
                            });
                        }
                    } else {
                        await xstbot.sendMessage(from, { text: `Number ${text} is already in the scammer list!` });
                    }
                    break;

                case 'delscam':
                    if (!isOwner && !isAdmins) {
                        await xstbot.sendMessage(from, { text: 'Only admins can use this command!' });
                        return;
                    }
                    if (!text) {
                        await xstbot.sendMessage(from, { text: 'Usage: .delscam <phone_number>' });
                        return;
                    }
                    const delNumber = normalizeNumber(text);
                    if (antiscamData.scammers.includes(delNumber)) {
                        antiscamData.scammers = antiscamData.scammers.filter(num => num !== delNumber);
                        saveAntiscamData();
                        await xstbot.sendMessage(from, { text: `Number ${text} removed from scammer list!` });
                    } else {
                        await xstbot.sendMessage(from, { text: `Number ${text} is not in the scammer list!` });
                    }
                    break;