ethix-md-user / src /plugin /gcfullpp.js
arabdullah's picture
ARAbdulla-Dev2
8de10f9 verified
import generateProfilePicture from '../generateProfilePicture.js';
import { writeFile, unlink } from 'fs/promises';
import config from '../../config.cjs';
const setProfilePictureGroup = async (m, gss) => {
const prefix = config.PREFIX;
const cmd = m.body.startsWith(prefix) ? m.body.slice(prefix.length).split(' ')[0].toLowerCase() : '';
const text = m.body.slice(prefix.length + cmd.length).trim();
const validCommands = ['setppfullgroup', 'setfullprofilepicgc', 'fullppgc'];
if (validCommands.includes(cmd)) {
if (!m.isGroup) return m.reply("*πŸ“› THIS COMMAND CAN ONLY BE USED IN GROUPS*");
const groupMetadata = await gss.groupMetadata(m.from);
const participants = groupMetadata.participants;
const botNumber = await gss.decodeJid(gss.user.id);
const botAdmin = participants.find(p => p.id === botNumber)?.admin;
const senderAdmin = participants.find(p => p.id === m.sender)?.admin;
if (!botAdmin) return m.reply("*πŸ“› BOT MUST BE AN ADMIN TO USE THIS COMMAND*");
if (!senderAdmin) return m.reply("*πŸ“› YOU MUST BE AN ADMIN TO USE THIS COMMAND*");
if (!m.quoted || m.quoted.mtype !== 'imageMessage') {
return m.reply(`Send/Reply with an image to set your profile picture ${prefix + cmd}`);
}
try {
const media = await m.quoted.download(); // Download the media from the quoted message
if (!media) throw new Error('Failed to download media.');
const filePath = `./${Date.now()}.png`;
await writeFile(filePath, media);
try {
const { img } = await generateProfilePicture(media); // Generate profile picture
await gss.query({
tag: 'iq',
attrs: {
to: m.from,
type: 'set',
xmlns: 'w:profile:picture'
},
content: [{
tag: 'picture',
attrs: {
type: 'image'
},
content: img
}]
});
m.reply('Profile picture updated successfully.');
} catch (err) {
throw err;
} finally {
await unlink(filePath); // Clean up the downloaded file
}
} catch (error) {
console.error('Error setting profile picture:', error);
m.reply('Error setting profile picture.');
}
}
};
export default setProfilePictureGroup;