|
1 | 1 | import makeWASocket, { |
2 | 2 | fetchLatestBaileysVersion, |
| 3 | + generateWAMessageContent, |
| 4 | + generateWAMessageFromContent, |
3 | 5 | initAuthCreds, |
4 | 6 | type AuthenticationCreds, |
5 | 7 | type UserFacingSocketConfig, |
6 | 8 | type WAMessage, |
7 | 9 | type WAMessageKey, |
8 | 10 | } from 'baileys' |
| 11 | +import crypto from 'node:crypto' |
9 | 12 | import { |
10 | 13 | deleteMessage, |
11 | 14 | EditBuilder, |
@@ -721,8 +724,8 @@ export class Client extends TypedEventEmitter<ClientEventMap> { |
721 | 724 | logger: this.logger, |
722 | 725 | onText: (handler) => { |
723 | 726 | const wrapped = (msg: MessageContext): void => handler(msg) |
724 | | - this.on('text', wrapped) |
725 | | - return () => this.off('text', wrapped) |
| 727 | + this.on('message', wrapped) |
| 728 | + return () => this.off('message', wrapped) |
726 | 729 | }, |
727 | 730 | buildContext: (resolved, msg) => this.buildCommandContext(resolved, msg), |
728 | 731 | }) |
@@ -859,6 +862,39 @@ export class Client extends TypedEventEmitter<ClientEventMap> { |
859 | 862 | await socket.sendMessage(recipient, { disappearingMessagesInChat: seconds } as never) |
860 | 863 | } |
861 | 864 |
|
| 865 | + async sendGroupStatus(targetJid: string, content: Record<string, unknown>): Promise<WAMessage> { |
| 866 | + this.assertWebProvider('sendGroupStatus') |
| 867 | + const socket = this.requireSocket() as any |
| 868 | + const backgroundColor = content['backgroundColor'] |
| 869 | + const cleanContent: Record<string, unknown> = { ...content } |
| 870 | + delete cleanContent['backgroundColor'] |
| 871 | + |
| 872 | + const opts: any = { |
| 873 | + upload: socket.waUploadToServer.bind(socket), |
| 874 | + } |
| 875 | + if (backgroundColor != null) { |
| 876 | + opts.backgroundColor = backgroundColor |
| 877 | + } |
| 878 | + |
| 879 | + const inside = await generateWAMessageContent(cleanContent as any, opts) |
| 880 | + |
| 881 | + const messageSecret = crypto.randomBytes(32) |
| 882 | + |
| 883 | + const msg = generateWAMessageFromContent( |
| 884 | + targetJid, |
| 885 | + { |
| 886 | + messageContextInfo: { messageSecret }, |
| 887 | + groupStatusMessageV2: { |
| 888 | + message: Object.assign({}, inside, { messageContextInfo: { messageSecret } }), |
| 889 | + }, |
| 890 | + }, |
| 891 | + { userJid: socket.user?.id || targetJid } |
| 892 | + ) |
| 893 | + |
| 894 | + await socket.relayMessage(targetJid, msg.message, { messageId: msg.key.id }) |
| 895 | + return msg |
| 896 | + } |
| 897 | + |
862 | 898 | private resolveRecipient(to: string): Promise<string> { |
863 | 899 | return resolveUsername(this.requireSocket() as unknown as UsernameResolveSocketLike, to, this.usernameCache) |
864 | 900 | } |
|
0 commit comments