Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
192 commits
Select commit Hold shift + click to select a range
3b85f60
Modify bot configuration settings
MrLloyd808 Jul 29, 2026
3726eed
Delete utils/
MrLloyd808 Jul 29, 2026
d28a5c5
Add files via upload
MrLloyd808 Jul 29, 2026
829de54
Remove image handling from menu.js
MrLloyd808 Jul 29, 2026
0dce608
Implement image sending in menu command
MrLloyd808 Jul 29, 2026
22507d3
Implement basic HTTP server in index.js
MrLloyd808 Jul 30, 2026
5cae49a
Update bot owner name in config.js
MrLloyd808 Jul 30, 2026
0db7e19
Update video.js
MrLloyd808 Jul 30, 2026
52e2e5a
Update video.js
MrLloyd808 Jul 30, 2026
a35e907
Create hi.js
MrLloyd808 Jul 30, 2026
8fead24
Delete commands/hi.js
MrLloyd808 Jul 30, 2026
2eb5d80
Create hi.js
MrLloyd808 Jul 30, 2026
926b588
Update hi.js
MrLloyd808 Jul 30, 2026
b80231c
Update hi.js
MrLloyd808 Jul 30, 2026
95453e5
Fix string quotes in command aliases
MrLloyd808 Jul 30, 2026
253448e
Update hi.js
MrLloyd808 Jul 30, 2026
c9fdf29
Update greeting message in hi.js
MrLloyd808 Jul 30, 2026
d777a1b
Create yts.js
MrLloyd808 Jul 30, 2026
03f9bff
Update yts.js
MrLloyd808 Jul 30, 2026
9272e10
Update yts.js
MrLloyd808 Jul 30, 2026
a7a6584
Fix URL concatenation in yts.js
MrLloyd808 Jul 30, 2026
bf7c701
Fix message formatting in yts.js
MrLloyd808 Jul 30, 2026
c71bef2
Update yts.js
MrLloyd808 Jul 30, 2026
1ff205c
Fix error handling in yts command
MrLloyd808 Jul 30, 2026
ddaa0e0
Update yts.js
MrLloyd808 Jul 30, 2026
242633a
Fix error handling and improve search response
MrLloyd808 Jul 30, 2026
e653c71
Update YouTube search API endpoint and response format
MrLloyd808 Jul 30, 2026
1e5a04b
Fix formatting of results message in yts.js
MrLloyd808 Jul 30, 2026
c0cab6d
Update yts.js
MrLloyd808 Jul 30, 2026
be1cc4f
Delete commands/anime/waifu.js
MrLloyd808 Jul 30, 2026
6345e34
Delete commands/anime/hneko.js
MrLloyd808 Jul 30, 2026
fd0c0c7
Delete commands/anime/hwaifu.js
MrLloyd808 Jul 30, 2026
f83ede0
Delete commands/anime/konachan.js
MrLloyd808 Jul 30, 2026
65886cd
Delete commands/anime/megumin.js
MrLloyd808 Jul 30, 2026
a7f7559
Delete commands/anime/milf.js
MrLloyd808 Jul 30, 2026
c040b05
Delete commands/anime/random.js
MrLloyd808 Jul 30, 2026
9fb7e4d
Delete commands/anime/neko.js
MrLloyd808 Jul 30, 2026
3c273f1
Add NSFW commands to the anime menu
MrLloyd808 Jul 30, 2026
448308d
Update loli.js
MrLloyd808 Jul 30, 2026
d7ad141
Update package.json
MrLloyd808 Jul 30, 2026
4ba6e2e
Add xvid command to search XVideos
MrLloyd808 Jul 31, 2026
4137c34
Update xvid.js
MrLloyd808 Jul 31, 2026
e66d75d
Create xdown.js
MrLloyd808 Jul 31, 2026
00adc15
Refactor XVideos download command
MrLloyd808 Jul 31, 2026
e0da886
Trim URL argument for video message
MrLloyd808 Jul 31, 2026
d421b28
Update xdown.js
MrLloyd808 Jul 31, 2026
7da88dd
Update xdown.js
MrLloyd808 Jul 31, 2026
845f74e
Update xdown.js
MrLloyd808 Jul 31, 2026
151c42c
Rename command and update aliases and category
MrLloyd808 Jul 31, 2026
f6234da
Update facebook.js
MrLloyd808 Jul 31, 2026
a30e004
Update tiktok.js
MrLloyd808 Jul 31, 2026
620c749
Add nekosapi dependency to package.json
MrLloyd808 Jul 31, 2026
b1e05b4
Add neko command to send random catgirl images
MrLloyd808 Jul 31, 2026
0222413
Remove nekosapi dependency
MrLloyd808 Jul 31, 2026
03d4068
Refactor neko command to use axios for image fetch
MrLloyd808 Jul 31, 2026
b2ff991
Update neko.js
MrLloyd808 Jul 31, 2026
1417567
Update neko.js
MrLloyd808 Jul 31, 2026
e9688c0
Add waifu command to fetch random waifu images
MrLloyd808 Jul 31, 2026
c4db49a
Update neko.js
MrLloyd808 Jul 31, 2026
769f276
Update xdown.js
MrLloyd808 Jul 31, 2026
e143648
Create cat.js
MrLloyd808 Jul 31, 2026
91caef8
Update xvid.js
MrLloyd808 Jul 31, 2026
10c905d
Update xdown.js
MrLloyd808 Jul 31, 2026
4e526d6
Update xdown.js
MrLloyd808 Jul 31, 2026
888eb97
Update waifu.js
MrLloyd808 Jul 31, 2026
1dd4762
Update waifu.js
MrLloyd808 Jul 31, 2026
0591737
Create shorten.js
MrLloyd808 Jul 31, 2026
7cc8b38
Create ttp.ts
MrLloyd808 Jul 31, 2026
2d2dff4
Update config.js
MrLloyd808 Jul 31, 2026
2056a4b
Update config.js
MrLloyd808 Jul 31, 2026
09c8cb4
Update config.js
MrLloyd808 Jul 31, 2026
f044fc8
Delete commands/utility/ttp.ts
MrLloyd808 Jul 31, 2026
68efc28
Update bot behavior and timezone settings
MrLloyd808 Jul 31, 2026
6757845
Modify bot configuration settings
MrLloyd808 Aug 1, 2026
f223760
Update xvid.js
MrLloyd808 Aug 1, 2026
70b23c0
Update yts.js
MrLloyd808 Aug 1, 2026
937812c
Change default sessionID to an empty string
MrLloyd808 Aug 1, 2026
d9c3462
Enable self mode and change antilink action
MrLloyd808 Aug 1, 2026
00fc17d
Update config.js
MrLloyd808 Aug 1, 2026
87cbe3f
Update config.js
MrLloyd808 Aug 1, 2026
84d3050
Update config.js
MrLloyd808 Aug 1, 2026
4535aee
Update list.js
MrLloyd808 Aug 1, 2026
12a5718
Update config.js
MrLloyd808 Aug 1, 2026
b41bee0
Update config.js
MrLloyd808 Aug 1, 2026
1f35775
Create join.js
MrLloyd808 Aug 1, 2026
1f82691
Create add.js
MrLloyd808 Aug 1, 2026
9c7bdf8
Add Spotify command for downloading tracks as MP3
MrLloyd808 Aug 1, 2026
621d147
Update sessionID default value in config.js
MrLloyd808 Aug 1, 2026
127327d
Update config.js
MrLloyd808 Aug 1, 2026
5e6683b
Delete commands/ai/ai.js
MrLloyd808 Aug 1, 2026
85ebc99
Delete commands/admin/add.js
MrLloyd808 Aug 1, 2026
c9678f1
Change audio message to document in Spotify command
MrLloyd808 Aug 1, 2026
b2eb6cf
Update config.js
MrLloyd808 Aug 1, 2026
1a24e51
Update sessionID in config.js
MrLloyd808 Aug 1, 2026
c1536a0
Update config.js
MrLloyd808 Aug 4, 2026
14bbe3f
Enable autoDownload in config.js
MrLloyd808 Aug 4, 2026
720f48d
Refactor join command for group invites
MrLloyd808 Aug 4, 2026
029dcff
Update list.js
MrLloyd808 Aug 4, 2026
f3990ac
Create leave.js
MrLloyd808 Aug 4, 2026
8e15b15
Create poll.js
MrLloyd808 Aug 4, 2026
9aa8314
Update menu.js
MrLloyd808 Aug 4, 2026
53b7dac
Update config.js
MrLloyd808 Aug 4, 2026
174499f
Update config.js
MrLloyd808 Aug 4, 2026
f73c992
Delete commands/admin/leave.js
MrLloyd808 Aug 4, 2026
bae12f2
Delete commands/admin/join.js
MrLloyd808 Aug 4, 2026
f9969a7
Delete commands/admin/poll.js
MrLloyd808 Aug 4, 2026
b422a73
Update config.js
MrLloyd808 Aug 4, 2026
870a2fe
Update config.js
MrLloyd808 Aug 4, 2026
dd3e828
Update xvid.js
MrLloyd808 Aug 4, 2026
d67c0f4
Update config.js
MrLloyd808 Aug 4, 2026
952b417
Update video.js
MrLloyd808 Aug 4, 2026
6b98687
Update config.js
MrLloyd808 Aug 4, 2026
8a879ba
Rename command from 'ytvideo' to 'ytdoc'
MrLloyd808 Aug 4, 2026
552d1f4
Update video.js
MrLloyd808 Aug 4, 2026
16aab63
Create ytdoc.js
MrLloyd808 Aug 4, 2026
5055d38
Increase displayed YouTube results from 7 to 15
MrLloyd808 Aug 4, 2026
b4b96e6
Create add.js
MrLloyd808 Aug 4, 2026
9d8c34f
Create join.js
MrLloyd808 Aug 4, 2026
cfd411f
Update leave command aliases and category
MrLloyd808 Aug 4, 2026
6ccfa29
Update config.js
MrLloyd808 Aug 4, 2026
b04bffe
Update config.js
MrLloyd808 Aug 4, 2026
c63c85e
Update join.js
MrLloyd808 Aug 4, 2026
51e1ad2
Update leave.js
MrLloyd808 Aug 4, 2026
b1f984b
Update menu.js
MrLloyd808 Aug 4, 2026
200b075
Update add.js
MrLloyd808 Aug 4, 2026
01baedd
Update config.js
MrLloyd808 Aug 4, 2026
6b244d4
Change default sessionID in config.js
MrLloyd808 Aug 4, 2026
cc21a41
Update menu.js
MrLloyd808 Aug 4, 2026
f1107b8
Update config.js
MrLloyd808 Aug 4, 2026
5acd41a
Update config.js
MrLloyd808 Aug 4, 2026
31b85d2
Refactor menu command and update aliases
MrLloyd808 Aug 4, 2026
516e2af
Update config.js
MrLloyd808 Aug 4, 2026
40587f8
Update config.js
MrLloyd808 Aug 4, 2026
0420989
Enhance menu command structure and formatting
MrLloyd808 Aug 4, 2026
2c41c39
Update config.js
MrLloyd808 Aug 4, 2026
6bbf16d
Update config.js
MrLloyd808 Aug 4, 2026
8a80f4d
Create poll.js
MrLloyd808 Aug 4, 2026
eb464e4
Create setgcpp.js
MrLloyd808 Aug 4, 2026
c273def
Create tovv.js
MrLloyd808 Aug 4, 2026
071c2ff
Update tovv.js
MrLloyd808 Aug 4, 2026
599227f
Update config.js
MrLloyd808 Aug 4, 2026
e021e75
Change fallback sessionID in config.js
MrLloyd808 Aug 4, 2026
08db7d5
Update tovv.js
MrLloyd808 Aug 4, 2026
a0a9e46
Change poll category from 'group' to 'admin'
MrLloyd808 Aug 4, 2026
a9a53a1
Add setgname command to change group name
MrLloyd808 Aug 4, 2026
4e917d3
Add setbio command to update bot's WhatsApp status
MrLloyd808 Aug 4, 2026
4a56000
Create setname.js
MrLloyd808 Aug 4, 2026
4f9d667
Add ownerOnly property to setbio command
MrLloyd808 Aug 4, 2026
5a808c5
Refactor sessionID in bot configuration
MrLloyd808 Aug 4, 2026
fa7a89f
Update config.js
MrLloyd808 Aug 4, 2026
1277ccb
Delete commands/owner/tovv.js
MrLloyd808 Aug 4, 2026
1728cbe
Delete commands/owner/setbio.js
MrLloyd808 Aug 4, 2026
9213d7b
Delete commands/owner/setname.js
MrLloyd808 Aug 4, 2026
f6469f6
Refactor sessionID in config.js
MrLloyd808 Aug 4, 2026
e518602
Update config.js
MrLloyd808 Aug 5, 2026
7b503c2
Create autodownload.js
MrLloyd808 Aug 5, 2026
6cdb7cb
Update handler.js
MrLloyd808 Aug 5, 2026
d288e76
Simplify prefix check in handler.js
MrLloyd808 Aug 5, 2026
5294d04
Update config.js
MrLloyd808 Aug 5, 2026
818ef0a
Update handler.js
MrLloyd808 Aug 5, 2026
247b0f1
Update config.js
MrLloyd808 Aug 5, 2026
1521d81
Rename funCommands.js to funCommands.jsxn
MrLloyd808 Aug 5, 2026
7aee84f
Update menu.js
MrLloyd808 Aug 5, 2026
e3d53d9
Add command to change group name
MrLloyd808 Aug 5, 2026
008e052
Delete commands/admin/setgname.js
MrLloyd808 Aug 5, 2026
ebd4c6f
Create setbname.js
MrLloyd808 Aug 5, 2026
8a83131
Create setbio.js
MrLloyd808 Aug 5, 2026
2bcbc36
Create revoke.js
MrLloyd808 Aug 5, 2026
35cc028
Update revoke.js
MrLloyd808 Aug 5, 2026
cfbc7e9
Create disp.js
MrLloyd808 Aug 5, 2026
e520d07
Create blocklist.js
MrLloyd808 Aug 5, 2026
3daa445
Create funCommands.js
MrLloyd808 Aug 5, 2026
42b98af
Create tagadmins.js
MrLloyd808 Aug 5, 2026
00b76f9
Update xvid.js
MrLloyd808 Aug 5, 2026
10679cc
Update config.js
MrLloyd808 Aug 5, 2026
4908575
Update config.js
MrLloyd808 Aug 5, 2026
da7f6e8
Update setbname.js
MrLloyd808 Aug 5, 2026
4650781
Add approve requests command for admin
MrLloyd808 Aug 5, 2026
2eabb0b
Add reject requests command for admin users
MrLloyd808 Aug 5, 2026
2ca744a
Update approve.js
MrLloyd808 Aug 5, 2026
abe29ef
Update menu.js
MrLloyd808 Aug 5, 2026
1a478a4
Update config.js
MrLloyd808 Aug 5, 2026
4bac712
Update config.js
MrLloyd808 Aug 5, 2026
7572ebe
Rename handler.js to handler.txt
MrLloyd808 Aug 5, 2026
9e48c59
Update print statement from 'Hello' to 'Goodbye'
MrLloyd808 Aug 5, 2026
ee98d7b
Delete utils/autodownload.js
MrLloyd808 Aug 5, 2026
4f8dcc6
Update config.js
MrLloyd808 Aug 5, 2026
2c9d266
Update config.js
MrLloyd808 Aug 5, 2026
6cc4303
Delete commands/admin/approve.js
MrLloyd808 Aug 5, 2026
6f1c056
Delete commands/admin/reject.js
MrLloyd808 Aug 5, 2026
cf37591
Enhance command display with category emojis
MrLloyd808 Aug 5, 2026
babd93d
Update config.js
MrLloyd808 Aug 5, 2026
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
94 changes: 94 additions & 0 deletions commands/admin/add.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
module.exports = {
name: 'add',
aliases: ['adduser'],
desc: 'Add a member to the group',
category: 'Admin',

groupOnly: true,
adminOnly: true,
botAdminNeeded: true,

reactions: {
start: '➕',
success: '✅'
},

execute: async (sock, msg, args, {
from,
reply,
react
}) => {
try {
await react('➕');

let jid;

// Reply target
if (msg.quoted?.sender) {
jid = msg.quoted.sender;
}

// Mention target
if (!jid && msg.mentionedJid?.length) {
jid = msg.mentionedJid[0];
}

// Number from args
if (!jid && args.length) {
let number = args[0].replace(/\D/g, '');

if (number.startsWith('0')) {
number = '27' + number.slice(1);
}

if (number.length < 8) {
return reply('❌ Invalid phone number.');
}

jid = `${number}@s.whatsapp.net`;
}

if (!jid) {
return reply(
'Usage:\n' +
'• .add @user\n' +
'• .add 27712345678\n' +
'• Reply to someone with .add'
);
}

const result = await sock.groupParticipantsUpdate(
from,
[jid],
'add'
);

const status = Number(result?.[0]?.status);

switch (status) {
case 200:
await react('✅');
return reply('✅ Member added successfully.');

case 403:
return reply("❌ Can't add this user because of their privacy settings.");

case 404:
return reply('❌ User is not registered on WhatsApp.');

case 408:
return reply('❌ Invite expired or timed out.');

case 409:
return reply('ℹ️ User is already in the group.');

default:
return reply(`❌ Failed to add user.\nStatus: ${status || 'Unknown'}`);
}

} catch (err) {
console.error(err);
reply(`❌ ${err.message}`);
}
}
};
100 changes: 100 additions & 0 deletions commands/admin/poll.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
/**
* Poll Command - Create a poll in a group chat
*/

const config = require('../../config');

// ===================================================
// UTILITIES
// ===================================================

/**
* Creates a decorative header for the command response.
* @param {string} title - The title of the section.
* @returns {string} - The formatted header string.
*/
const createHeader = (title) => {
return `*[ ${title.toUpperCase()} ]*`;
};

/**
* Creates a separator line.
* @returns {string}
*/
const createSeparator = () => "──────────────";

// ===================================================
// MAIN COMMAND DEFINITION
// ===================================================

module.exports = {
name: 'poll',
aliases: ['createpoll', 'vote'],
category: 'admin',
adminOnly: true,
description: 'Create a poll with a question and options',
usage: '.poll Question | Option 1 | Option 2 | Option 3',

async execute(sock, msg, args, extra) {
try {
// Check if it's a group chat (polls are typically used in groups)
if (!extra.from.endsWith('@g.us')) {
await sock.sendMessage(
extra.from,
{ text: '❌ This command can only be used inside groups!' },
{ quoted: msg }
);
return;
}

// Combine all arguments and split by the pipe symbol `|`
const input = args.join(' ');
const parts = input.split('|').map(part => part.trim());

const question = parts[0];
const options = parts.slice(1);

// Validate question and options (at least 2 options required for a valid poll)
if (!question || options.length < 2) {
let text = '';
text += createHeader('Poll Usage Error') + '\n\n';
text += `❌ Please provide a question and at least 2 options separated by pipes (\`|\`).\n\n`;
text += `*Example:*\n`;
text += `${config.prefix}poll What should we play? | PUBG | COD Mobile | Free Fire\n\n`;
text += createSeparator() + '\n';
text += `💡 Make sure to use \`|\` between options!`;

await sock.sendMessage(
extra.from,
{ text, mentions: [extra.sender] },
{ quoted: msg }
);
return;
}

// Baileys poll creation payload
// selectableCount: 1 allows single voting, set to higher if multi-choice is needed
await sock.sendMessage(
extra.from,
{
poll: {
name: question,
values: options,
selectableCount: 1
}
},
{ quoted: msg }
);

} catch (err) {
console.error(err);
await sock.sendMessage(
extra.from,
{
text: `❌ ${err.message}`
},
{ quoted: msg }
);
}
}
};
33 changes: 33 additions & 0 deletions commands/admin/revoke.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
module.exports = {
name: 'revokelink',
aliases: ['resetlink', 'revokeinvite', 'rvk'],
category: 'admin',
description: 'Revoke the current group invite link',
usage: 'revokelink',
groupOnly: true,
adminOnly: true,
reactions: {
start: '🔄',
success: '✅',
error: '❌'
},

execute: async (sock, msg, args, { reply }) => {
try {
const groupId = msg.key.remoteJid;

await sock.groupRevokeInvite(groupId);

const newCode = await sock.groupInviteCode(groupId);
const newLink = `https://chat.whatsapp.com/${newCode}`;

return reply(
`✅ *Group invite link has been revoked!*\n\n` +
`🔗 *New Invite Link:*\n${newLink}`
);
} catch (err) {
console.error(err);
return reply('❌ Failed to revoke the group invite link.');
}
}
};
37 changes: 37 additions & 0 deletions commands/admin/setgcname.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
module.exports = {
name: 'setgroupname',
aliases: ['setname', 'groupname', 'subject'],
category: 'admin',
description: 'Change the group name',
usage: 'setgroupname <new name>',
groupOnly: true,
adminOnly: true,
reactions: {
start: '✏️',
success: '✅',
error: '❌'
},

execute: async (sock, msg, args, { reply }) => {
try {
if (!args.length) {
return reply(
`❌ Please provide a new group name.\n\nExample:\n.setgroupname My Awesome Group`
);
}

const newName = args.join(' ').trim();

if (newName.length > 100) {
return reply('❌ Group name cannot be longer than 100 characters.');
}

await sock.groupUpdateSubject(msg.key.remoteJid, newName);

return reply(`✅ Group name has been changed to:\n*${newName}*`);
} catch (err) {
console.error(err);
return reply('❌ Failed to change the group name.');
}
}
};
114 changes: 114 additions & 0 deletions commands/admin/setgcpp.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
/**
* Set Group Icon / Profile Command - Change the group's profile picture
*/

const fs = require('fs');
const path = require('path');
const config = require('../../config');

// ===================================================
// UTILITIES
// ===================================================

/**
* Creates a decorative header for the command response.
* @param {string} title - The title of the section.
* @returns {string} - The formatted header string.
*/
const createHeader = (title) => {
return `*[ ${title.toUpperCase()} ]*`;
};

/**
* Creates a separator line.
* @returns {string}
*/
const createSeparator = () => "──────────────";

// ===================================================
// MAIN COMMAND DEFINITION
// ===================================================

module.exports = {
name: 'setgpp',
aliases: ['gp', 'gcpp'],
category: 'admin',
description: 'Change the group profile picture',
usage: '.setgpp (reply to an image or attach one)',

async execute(sock, msg, args, extra) {
try {
// Check if it's a group chat
if (!extra.from.endsWith('@g.us')) {
await sock.sendMessage(
extra.from,
{ text: '❌ This command can only be used inside groups!' },
{ quoted: msg }
);
return;
}

// Check if sender is admin or bot has admin rights (optional check depending on your bot framework, but good practice)
// Here we look for quoted media or media attached directly to the message
const quotedMsg = msg.message?.extendedTextMessage?.contextInfo?.quotedMessage;
const isQuotedImage = quotedMsg?.imageMessage;
const isDirectImage = msg.message?.imageMessage;

if (!isDirectImage && !isQuotedImage) {
let text = '';
text += createHeader('Group Profile Error') + '\n\n';
text += `❌ Please send or reply to an image with the command ${config.prefix}setgpp.\n\n`;
text += createSeparator() + '\n';
text += `💡 Attach an image or reply to one to update the group icon.`;

await sock.sendMessage(
extra.from,
{ text, mentions: [extra.sender] },
{ quoted: msg }
);
return;
}

// Inform user that processing has started
await sock.sendMessage(
extra.from,
{ text: '🔄 Updating group profile picture...' },
{ quoted: msg }
);

// Download media (handles both direct media or quoted media)
// Note: Depending on your baileys wrapper helper, you can use downloadMediaMessage or downloadContentFromMessage.
// Using standard Baileys download approach:
const mediaMessage = isDirectImage ? msg.message : quotedMsg;

// If your framework has a dedicated media downloader utility, use it here.
// Below is the standard Baileys method block for updating group icon:
const { downloadMediaMessage } = require('@whiskeysockets/baileys');
const buffer = await downloadMediaMessage(
{ message: mediaMessage },
'buffer',
{},
{ logger: console }
);

// Update group profile picture using Baileys socket method
await sock.updateProfilePicture(extra.from, buffer);

await sock.sendMessage(
extra.from,
{ text: '✅ Successfully updated the group profile picture!' },
{ quoted: msg }
);

} catch (err) {
console.error(err);
await sock.sendMessage(
extra.from,
{
text: `❌ Failed to update group picture: ${err.message}`
},
{ quoted: msg }
);
}
}
};
Loading