1.0.37 • Published 8 months ago

@deathnaitsa/wa-api v1.0.37

Weekly downloads
-
License
ISC
Repository
github
Last release
8 months ago

wa-api

Leichte Bibliothek zur Verwaltung mehrerer WhatsApp-Sessions – mit einer universellen sendMessage-Funktion und direkter relayMessage-Unterstützung für alle fortgeschrittenen Szenarien.


📑 Inhaltsverzeichnis

  1. Installation
  2. Import & Setup
  3. Session Management
  4. Nachrichten senden via sendMessage
  5. Low-level relayMessage Beispiele

  6. Listener

  7. Fehlerbehandlung

📦 Installation

npm install @deathnaitsa/wa-api@latest

🔌 Import & Setup

// CommonJS
const wa = require('@deathnaitsa/wa-api');

// ES Module
import * as wa from '@deathnaitsa/wa-api';

🚀 Session Management

await wa.startSession('session1');
await wa.startSessionWithPairingCode('session2', { phoneNumber: '491234567890' });
const all = wa.getAllSession();
const one = wa.getSession('session1');
const loaded = await wa.loadSessionsFromStorage();

💬 Nachrichten senden via sendMessage

Eine zentrale Funktion für alle Nachrichtentypen:

await wa.sendMessage(
  sessionId,      // Session-ID
  jidOrPhone,     // JID oder Telefonnummer
  content,        // AnyMessageContent
  options         // MiscMessageGenerationOptions
);

Beispiele

TypKurzbeschreibungcontentoptions
TextNormale Textnachricht{ text: 'Hallo Welt!' }{ quoted, mentions }
BildSende Bild{ image:{url:'./img.png'},caption:'Bild',viewOnce:true }{ quoted }
VideoSende Video{ video:{url:'./vid.mp4'},caption:'Video' }{ }
GIFSende GIF (MP4 + Playback){ video:{url:'./gif.mp4'},gifPlayback:true }{ }
AudioVoice Note (OGG/Opus){ audio: fs.createReadStream('test.ogg'),mimetype:'audio/ogg',ptt:true }{ quoted }
DokumentDatei{ document:{url:'./doc.pdf',filename:'Doc.pdf'} }{ }
PollUmfrage{ pollCreationMessage:{name:'Umfrage',options:[{name:'A'},{name:'B'}],selectableCount:1} }{ quoted }
ReactEmoji-Reaktion{ react:{text:'👍',key:msg.key} }{ quoted }
DeleteLöschen (Revoke){ delete: msg.key }{ }
PinPin/Unpin{ pin:{type:1,time:3600,key:msg.key} }{ }
ContactsKontaktkarte{ contacts:{displayName:'Max',contacts:[{vcard}] } }{ }
LocationStandort{ location:{degreesLatitude:52.52,degreesLongitude:13.405} }{ }
ForwardWeiterleiten{ forward: origMsg }{ quoted }
Status (Story)Status-Update{ video:{url:'story.mp4'},caption:'Status' }{ statusJidList:[...JIDs] }

🔄 Low-level relayMessage Beispiele

Direktes Senden von WAMessage-Stanzas für Spezialfälle.

ProtocolMessage: Nachricht löschen (Revoke)

const deleteNode = {
  protocolMessage: {
    key: { remoteJid: chatJid, fromMe: true, id: targetId },
    type: 7 // MESSAGE_REVOKE
  }
};
await wa.relayMessage(
  sessionId,
  chatJid,
  deleteNode,
  { messageId: targetId }
);

Ephemeral-Modus (Gruppen)

// 24h Ephemeral ein
await wa.relayMessage(
  sessionId,
  groupJid,
  { disappearingMessagesInChat: Defaults.WA_DEFAULT_EPHEMERAL },
  {}
);
// Ephemeral aus
await wa.relayMessage(
  sessionId,
  groupJid,
  { disappearingMessagesInChat: 0 },
  {}
);

Status-Update (Story)

const storyNode = {
  videoMessage: { url: './story.mp4' },
  caption: 'Meine Story' 
};
await wa.relayMessage(
  sessionId,
  'status@broadcast',
  storyNode,
  { statusJidList: ['491234567890@s.whatsapp.net'] }
);

Weiterleiten (Forward)

const origMsg = getMessageFromStore();
const forwardNode = { forward: origMsg };
await wa.relayMessage(
  sessionId,
  chatJid,
  forwardNode,
  { messageId: origMsg.key.id }
);

Profilbild aktualisieren

const updateNode = {
  profilePictureChange: {
    displayPicture: fs.readFileSync('./newprofile.jpg')
  }
};
await wa.relayMessage(
  sessionId,
  userJid,
  updateNode,
  { messageId: 'nishiProfileUpdate' }
);

Chat als gelesen markieren

const readNode = {
  protocolMessage: {
    key: { remoteJid: chatJid },
    type: 3 // READ 
  }
};
await wa.relayMessage(
  sessionId,
  chatJid,
  readNode,
  { messageId: 'nishiMarkRead' }
);

Nachrichten Id selbst Festlegen

 await wa.relayMessage(
    msg.sessionId,               // deine Session-ID
    msg.key.remoteJid,          
    {
    conversation: 'Dies ist eine Relay-Textnachricht'
  },                
    { messageId: `nishi`+ Date.now(); }       
  ); 

🎧 Listener

wa.onConnected(id => console.log('Online:', id));
wa.onQRUpdated(info => console.log('QR:', info));
wa.onMessageReceived(msg => console.log('Nachricht:', msg));

⚠️ Fehlerbehandlung

try {
  await wa.sendMessage(...);
} catch(e) {
  console.error(e);
}

© 2025 @deathnaitsa/wa-api • Support: sebloidl13@gmail.com

1.0.37

8 months ago

1.0.36

8 months ago

1.0.35

8 months ago

1.0.34

8 months ago

1.0.33

8 months ago

1.0.32

9 months ago

1.0.31

9 months ago

1.0.30

9 months ago

1.0.29

9 months ago

1.0.28

9 months ago

1.0.27

9 months ago

1.0.26

9 months ago

1.0.25

9 months ago

1.0.24

9 months ago

1.0.23

9 months ago

1.0.22

9 months ago

1.0.21

9 months ago

1.0.20

9 months ago

1.0.19

9 months ago

1.0.18

9 months ago

1.0.17

9 months ago

1.0.16

9 months ago

1.0.15

9 months ago

1.0.14

9 months ago

1.0.13

9 months ago

1.0.12

9 months ago

1.0.11

9 months ago

1.0.10

9 months ago

1.0.9

9 months ago

1.0.8

9 months ago

1.0.7

9 months ago

1.0.6

9 months ago

1.0.5

9 months ago

1.0.4

9 months ago

1.0.3

9 months ago

1.0.2

9 months ago

1.0.1

9 months ago

1.0.0

9 months ago