ستوري للقروب
javascriptv1MITنُشر ١٣ أغسطس ٢٠٢٦· ♥ 0 · ⬇ 1 · 💬 0
الحلو انه مب لازم تكون ادمن ، شرط يكون الشات مفتوح
// commands/ستوري.js
import { prepareWAMessageMedia, generateWAMessageFromContent, proto } from '@whiskeysockets/baileys';
// 🎨 16 لون
const COLORS = [
0xFFF44336, 0xFFE91E63, 0xFF9C27B0, 0xFF673AB7, 0xFF3F51B5,
0xFF2196F3, 0xFF03A9F4, 0xFF00BCD4, 0xFF009688, 0xFF4CAF50,
0xFF8BC34A, 0xFFCDDC39, 0xFFFFEB3B, 0xFFFFC107, 0xFFFF9800, 0xFFFF5722
];
export default {
name: 'ستوري',
aliases: ['story', 'منشور'],
category: 'group',
description: '📢 إنشاء منشور مخصص مع ألوان وخيارات',
async execute(sock, m, args, { cfg }) {
const chatJid = m.key.remoteJid;
const sender = m.key.participant || m.participant || m.key.remoteJid;
const comando = 'ستوري';
// ✅ التحقق من النخبة والمطور
const isOwner = cfg.ownerNumber === sender;
const isElite = (cfg.eliteNumbers || []).includes(sender);
if (!isOwner && !isElite) {
return sock.sendMessage(chatJid, {
text: cfg.msgs.elite(comando)
}, { quoted: m });
}
// ✅ التحقق من وجود رد
const quoted = m.message?.extendedTextMessage?.contextInfo?.quotedMessage;
let mime = '';
let isImage = false;
let isVideo = false;
let isAudio = false;
let isVoice = false;
if (quoted) {
if (quoted.imageMessage) {
isImage = true;
mime = 'image';
} else if (quoted.videoMessage) {
isVideo = true;
mime = 'video';
} else if (quoted.audioMessage) {
isAudio = true;
mime = 'audio';
if (quoted.audioMessage.ptt) isVoice = true;
}
}
// ✅ القيم الافتراضية (للكل)
let audienceType = 0; // ✅ 0 = عام (للجميع)
let listEmoji = '';
let listName = '';
let postText = '';
let colorIndex = -1;
let remainingText = args.join(' ').trim();
// ────────── تحليل الأمر ──────────
if (remainingText) {
let parts = remainingText.split(' ');
// ✅ استخراج اللون من البداية (رقم 0-15)
if (parts.length > 0) {
let potentialColor = parseInt(parts[0]);
if (!isNaN(potentialColor) && potentialColor >= 0 && potentialColor <= 15) {
colorIndex = potentialColor;
remainingText = parts.slice(1).join(' ');
} else {
remainingText = parts.join(' ');
}
}
postText = remainingText;
}
// اللون النهائي (عشوائي إذا لم يحدد)
const finalColor = (colorIndex >= 0 && colorIndex < COLORS.length)
? COLORS[colorIndex]
: COLORS[Math.floor(Math.random() * COLORS.length)];
// ────────── مساعدة ──────────
if (!postText && !isImage && !isVideo && !isAudio) {
return sock.sendMessage(chatJid, {
text: `📢 *نظام الاستوري المخصص*
🎨 *الألوان (0-15):*
0-أحمر | 1-وردي | 2-بنفسجي | 3-نيلي
4-أزرق | 5-أزرق فاتح | 6-سماوي | 7-فيروزي
8-أخضر | 9-أخضر فاتح | 10-ليموني | 11-ذهبي
12-أصفر | 13-كهرماني | 14-برتقالي | 15-أحمر برتقالي
✏️ *أمثلة:*
• .ستوري 5 مرحبا
• [رد على صورة] .ستوري 3`
}, { quoted: m });
}
try {
// ────────── حالة وسائط (صورة/فيديو/صوت) ──────────
if (isImage || isVideo || isAudio) {
const { downloadContentFromMessage } = await import('@whiskeysockets/baileys');
let mediaType = isImage ? 'image' : isVideo ? 'video' : 'audio';
let mediaMessage = isImage ? quoted.imageMessage : isVideo ? quoted.videoMessage : quoted.audioMessage;
const stream = await downloadContentFromMessage(mediaMessage, mediaType);
let buffer = Buffer.from([]);
for await (const chunk of stream) {
buffer = Buffer.concat([buffer, chunk]);
}
let mediaOptions = { [mediaType]: buffer };
if (isVoice) {
mediaOptions = { audio: buffer, mimetype: 'audio/ogg; codecs=opus', ptt: false };
}
let prepared = await prepareWAMessageMedia(mediaOptions, { upload: sock.waUploadToServer });
let messageKey = isImage ? 'imageMessage' : isVideo ? 'videoMessage' : 'audioMessage';
const contentMsg = {
[messageKey]: {
...prepared[messageKey],
caption: postText || '',
contextInfo: {
isGroupStatus: true,
pairedMediaType: 'NOT_PAIRED_MEDIA',
statusAudienceMetadata: {
audienceType: audienceType,
...(listEmoji && { listEmoji }),
...(listName && { listName })
}
}
}
};
const webMsg = proto.Message.fromObject(contentMsg);
const waMsg = generateWAMessageFromContent(chatJid, webMsg, { userJid: sock.user.id, quoted: m });
await sock.relayMessage(chatJid, waMsg.message, { messageId: waMsg.key.id });
await sock.sendMessage(chatJid, { react: { text: '✅', key: m.key } });
return;
}
// ────────── حالة نصية ──────────
const groupMetadata = await sock.groupMetadata(chatJid);
const statusJidList = groupMetadata.participants.map(p => p.id);
await sock.relayMessage(chatJid, {
statusJidList,
messageContextInfo: {
messageSecret: Buffer.from(Array(32).fill(0).map(() => Math.floor(Math.random() * 256)))
},
groupStatusMessageV2: {
message: {
extendedTextMessage: {
text: `${postText}`,
thumbnailUrl: 'https://file.garden/aauvg01sjleV_ic1/c2a3bfd6e9fd1db2f5358f8feec9261f.jpg',
textArgb: 4294967040,
backgroundArgb: finalColor,
font: 5,
previewType: 0,
contextInfo: {
statusAttributions: [{ type: 10 }],
featureEligibilities: { canBeReshared: true, canReceiveMultiReact: true },
statusSourceType: 4,
statusAudienceMetadata: {
audienceType: audienceType
}
},
inviteLinkGroupTypeV2: 0
}
}
}
}, {});
await sock.sendMessage(chatJid, { react: { text: '✅', key: m.key } });
} catch (error) {
console.error('❌ ستوري Error:', error);
await sock.sendMessage(chatJid, { react: { text: '❌', key: m.key } });
await sock.sendMessage(chatJid, {
text: `❌ حدث خطأ: ${error.message}`
}, { quoted: m });
}
}
};
التعليقات (0)
سجّل الدخول للتعليق.