-
-
Notifications
You must be signed in to change notification settings - Fork 116
/
sendListMessage.ts
118 lines (108 loc) · 2.9 KB
/
sendListMessage.ts
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/*!
* Copyright 2021 WPPConnect Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { WPPError } from '../../util';
import * as webpack from '../../webpack';
import { wrapModuleFunction } from '../../whatsapp/exportModule';
import { typeAttributeFromProtobuf } from '../../whatsapp/functions';
import {
defaultSendMessageOptions,
RawMessage,
SendMessageOptions,
SendMessageReturn,
} from '..';
import { sendRawMessage } from '.';
export interface ListMessageOptions extends SendMessageOptions {
buttonText: string;
description: string;
title?: string;
footer?: string;
sections: Array<{
title: string;
rows: Array<{
rowId: string;
title: string;
description: string;
}>;
}>;
}
/**
* Send a list message
*
* @example
* ```javascript
* WPP.chat.sendListMessage('[number]@c.us', {
* buttonText: 'Click Me!', //required
* description: "Hello it's list message", //required
* title: 'Hello user', //optional
* footer: 'Click and choose one', //optional
* sections: [{
* title: 'Section 1',
* rows: [{
* rowId: 'rowid1',
* title: 'Row 1',
* description: "Hello it's description 1",
* },{
* rowId: 'rowid2',
* title: 'Row 2',
* description: "Hello it's description 2",
* }]
* }]
* });
* ```
* @category Message
*/
export async function sendListMessage(
chatId: any,
options: ListMessageOptions
): Promise<SendMessageReturn> {
options = {
...defaultSendMessageOptions,
...options,
};
const sections = options.sections;
if (!Array.isArray(sections)) {
throw new WPPError('invalid_list_type', 'Sections must be an array');
}
if (sections.length === 0 || sections.length > 10) {
throw new WPPError(
'invalid_list_size',
'Sections options must have between 1 and 10 options'
);
}
const list: RawMessage['list'] = {
buttonText: options.buttonText,
description: options.description || ' ',
title: options.title,
footerText: options.footer,
listType: 1,
sections,
};
const message: RawMessage = {
type: 'list',
list,
footer: options.footer,
};
return await sendRawMessage(chatId, message, options);
}
webpack.onFullReady(() => {
wrapModuleFunction(typeAttributeFromProtobuf, (func, ...args) => {
const [proto] = args;
if (proto.listMessage) {
return 'text';
}
return func(...args);
});
});