1.0.37 • Published 10 months ago

@deathnaitsa/wa-api v1.0.37

Weekly downloads
-
License
ISC
Repository
github
Last release
10 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

10 months ago

1.0.36

10 months ago

1.0.35

10 months ago

1.0.34

10 months ago

1.0.33

10 months ago

1.0.32

11 months ago

1.0.31

11 months ago

1.0.30

11 months ago

1.0.29

11 months ago

1.0.28

11 months ago

1.0.27

11 months ago

1.0.26

11 months ago

1.0.25

11 months ago

1.0.24

12 months ago

1.0.23

12 months ago

1.0.22

12 months ago

1.0.21

12 months ago

1.0.20

12 months ago

1.0.19

12 months ago

1.0.18

12 months ago

1.0.17

12 months ago

1.0.16

12 months ago

1.0.15

12 months ago

1.0.14

12 months ago

1.0.13

12 months ago

1.0.12

12 months ago

1.0.11

12 months ago

1.0.10

12 months ago

1.0.9

12 months ago

1.0.8

12 months ago

1.0.7

12 months ago

1.0.6

12 months ago

1.0.5

12 months ago

1.0.4

12 months ago

1.0.3

12 months ago

1.0.2

12 months ago

1.0.1

12 months ago

1.0.0

12 months ago