File size: 1,289 Bytes
4327358
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import {
  isJidGroup,
  isJidMetaIa,
  isJidStatusBroadcast,
} from '@adiwajshing/baileys';
import {
  isJidBroadcast,
  isLidUser,
} from '@adiwajshing/baileys/lib/WABinary/jid-utils';

export function isJidNewsletter(jid: string) {
  return jid?.endsWith('@newsletter');
}

export function isJidCus(jid: string) {
  return jid?.endsWith('@c.us');
}

/**
 * Convert from 11111111111@c.us to 11111111111@s.whatsapp.net
 * @param chatId
 */
export function toJID(chatId) {
  if (isJidGroup(chatId)) {
    return chatId;
  }
  if (isJidBroadcast(chatId)) {
    return chatId;
  }
  if (isJidNewsletter(chatId)) {
    return chatId;
  }
  if (isLidUser(chatId)) {
    return chatId;
  }
  if (isJidMetaIa(chatId)) {
    return chatId;
  }
  const number = chatId.split('@')[0];
  return number + '@s.whatsapp.net';
}

export interface IgnoreJidConfig {
  status: boolean;
  groups: boolean;
  channels: boolean;
}

export class JidFilter {
  constructor(public ignore: IgnoreJidConfig) {}

  include(jid: string): boolean {
    if (this.ignore.status && isJidStatusBroadcast(jid)) {
      return false;
    } else if (this.ignore.groups && isJidGroup(jid)) {
      return false;
    } else if (this.ignore.channels && isJidNewsletter(jid)) {
      return false;
    }
    return true;
  }
}