owner-claimkey.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import fs from 'fs';
  2. import path from 'path';
  3. const keysFilePath = path.resolve('./src/key.json');
  4. // Función para cargar keys
  5. const loadKeys = () => {
  6. try {
  7. if (!fs.existsSync(keysFilePath)) {
  8. return [];
  9. }
  10. const data = fs.readFileSync(keysFilePath, "utf8");
  11. return JSON.parse(data);
  12. } catch (err) {
  13. console.error("❌ Error al cargar las keys:", err.message);
  14. return [];
  15. }
  16. };
  17. // Función para guardar keys
  18. const saveKeys = (keys) => {
  19. try {
  20. fs.writeFileSync(keysFilePath, JSON.stringify(keys, null, 2));
  21. return true;
  22. } catch (err) {
  23. console.error("❌ Error al guardar las keys:", err.message);
  24. return false;
  25. }
  26. };
  27. let handler = async (m, { conn, args, text, usedPrefix, command }) => {
  28. if (!text) {
  29. return m.reply(`📝 Formato correcto:
  30. ${usedPrefix}${command} <key>
  31. 📌 Ejemplo:
  32. ${usedPrefix}${command} Key-KantuBot-Ax7B9k2M
  33. > ℹ️ Nota: Comando Por HackStoreX "`);
  34. }
  35. try {
  36. // Validar formato de la key
  37. if (!text.startsWith('Key-KantuBot-')) {
  38. return m.reply('❌ Error: Formato de key inválido');
  39. }
  40. // Cargar keys
  41. let keys = loadKeys();
  42. // Buscar la key
  43. let keyIndex = keys.findIndex(k => k.key === text);
  44. if (keyIndex === -1) {
  45. return m.reply(`❌ Key no encontrada
  46. 📝 Verifica que:
  47. ▢ La key esté bien escrita
  48. ▢ La key exista
  49. ▢ No hayas usado una key caducada`);
  50. }
  51. let keyData = keys[keyIndex];
  52. // Verificar usos disponibles
  53. if (keyData.uses <= 0) {
  54. return m.reply(`❌ Esta key ya ha sido utilizada
  55. ℹ️ Información:
  56. ▢ Key: ${keyData.key}
  57. ▢ Título: ${keyData.title}
  58. ▢ Estado: Agotada`);
  59. }
  60. // Reducir usos y actualizar
  61. keyData.uses--;
  62. keys[keyIndex] = keyData;
  63. // Guardar cambios
  64. if (saveKeys(keys)) {
  65. // Mensaje para el usuario en el chat
  66. await conn.reply(m.chat, `✅ *¡Key canjeada con éxito!*\n\n📦 *${keyData.title}*\n\nℹ️ El contenido ha sido enviado a tu privado.`, m);
  67. // Mensaje privado con el contenido
  68. let privateMessage = `🎉 *¡Key Canjeada Exitosamente!*\n\n`;
  69. privateMessage += `📦 *${keyData.title}*\n\n`;
  70. privateMessage += `📝 *Contenido:*\n${keyData.text}\n\n`;
  71. privateMessage += `ℹ️ *Información:*\n`;
  72. privateMessage += `▢ Usos restantes: ${keyData.uses}\n`;
  73. privateMessage += `▢ Estado: ${keyData.uses > 0 ? 'Activa ✅' : 'Agotada ❌'}\n\n`;
  74. privateMessage += `📌 *Nota:* Guarda esta información cuidadosamente.`;
  75. await conn.sendMessage(m.sender, { text: privateMessage });
  76. // Notificación al creador
  77. let creatorNotif = `┏━━⊜ *KEY CANJEADA* ⊜━━┓\n\n`;
  78. creatorNotif += `⊜ *Usuario:* wa.me/${m.sender.split`@`[0]}\n`;
  79. creatorNotif += `⊜ *Nombre:* ${m.name || 'No disponible'}\n`;
  80. creatorNotif += `⊜ *Key:* ${keyData.key}\n`;
  81. creatorNotif += `⊜ *Título:* ${keyData.title}\n`;
  82. creatorNotif += `⊜ *Usos restantes:* ${keyData.uses}\n`;
  83. creatorNotif += `⊜ *Fecha:* ${new Date().toLocaleString()}\n`;
  84. creatorNotif += `\n┗━━━━━━━━━━━━━━━┛`;
  85. // Enviar notificación al creador (reemplaza con tu número)
  86. await conn.sendMessage('[email protected]', { text: creatorNotif });
  87. } else {
  88. throw new Error('Error al actualizar la base de datos');
  89. }
  90. } catch (error) {
  91. console.error(error);
  92. return m.reply(`❌ Error al procesar la key: ${error.message}`);
  93. }
  94. };
  95. handler.help = ['.claimkey <key>'];
  96. handler.tags = ['main'];
  97. handler.command = /^(claimkey|ckey|claim)$/i;
  98. handler.register = true
  99. export default handler;