@vielhuber/wahelper 1.5.6 → 1.5.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/package.json +3 -3
- package/wahelper.js +36 -1
package/README.md
CHANGED
|
@@ -55,6 +55,10 @@ npx wahelper \
|
|
|
55
55
|
--action "fetch_messages" \
|
|
56
56
|
--limit 42
|
|
57
57
|
|
|
58
|
+
# view a single message by id
|
|
59
|
+
--action "view_message" \
|
|
60
|
+
--id "ABCDEF1234567890"
|
|
61
|
+
|
|
58
62
|
# send message to user
|
|
59
63
|
--action "send_user" \
|
|
60
64
|
--number "xxxxxxxxxxxx" \
|
|
@@ -79,6 +83,9 @@ $wahelper = new wahelper();
|
|
|
79
83
|
// fetch messages
|
|
80
84
|
$wahelper->fetchMessages(device: 'xxxxxxxxxxxx', limit: 42);
|
|
81
85
|
|
|
86
|
+
// view a single message by id
|
|
87
|
+
$wahelper->viewMessage(device: 'xxxxxxxxxxxx', id: 'ABCDEF1234567890');
|
|
88
|
+
|
|
82
89
|
// send message to user
|
|
83
90
|
$wahelper->sendUser(
|
|
84
91
|
device: 'xxxxxxxxxxxx',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vielhuber/wahelper",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.8",
|
|
4
4
|
"description": "Lightweight whatsapp integration layer.",
|
|
5
5
|
"main": "wahelper.js",
|
|
6
6
|
"files": [
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
"qrcode-terminal": "^0.12.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@prettier/plugin-php": "^0.
|
|
30
|
-
"prettier": "^3.
|
|
29
|
+
"@prettier/plugin-php": "^0.25.0",
|
|
30
|
+
"prettier": "^3.8.3"
|
|
31
31
|
},
|
|
32
32
|
"engines": {
|
|
33
33
|
"node": ">=18"
|
package/wahelper.js
CHANGED
|
@@ -55,10 +55,11 @@ export default class wahelper {
|
|
|
55
55
|
this.args.device === undefined ||
|
|
56
56
|
(this.args.action === 'send_user' && (this.args.number === undefined || this.args.message === undefined)) ||
|
|
57
57
|
(this.args.action === 'send_group' && (this.args.name === undefined || this.args.message === undefined)) ||
|
|
58
|
+
(this.args.action === 'view_message' && (this.args.id === undefined || this.args.id === '')) ||
|
|
58
59
|
(this.args.action === 'fetch_messages' &&
|
|
59
60
|
this.args.limit !== undefined &&
|
|
60
61
|
typeof this.args.limit !== 'number') ||
|
|
61
|
-
!['fetch_messages', 'send_user', 'send_group'].includes(this.args.action)
|
|
62
|
+
!['fetch_messages', 'view_message', 'send_user', 'send_group'].includes(this.args.action)
|
|
62
63
|
) {
|
|
63
64
|
console.error('input missing or unknown action!');
|
|
64
65
|
this.log('⛔input missing or unknown action!');
|
|
@@ -106,6 +107,9 @@ export default class wahelper {
|
|
|
106
107
|
if (this.args.action === 'fetch_messages') {
|
|
107
108
|
response = await this.fetchMessages(this.args.limit);
|
|
108
109
|
}
|
|
110
|
+
if (this.args.action === 'view_message') {
|
|
111
|
+
response = await this.viewMessage(this.args.id);
|
|
112
|
+
}
|
|
109
113
|
if (this.args.action === 'send_user') {
|
|
110
114
|
response = await this.sendMessageToUser(this.args.number, this.args.message, this.args.attachments);
|
|
111
115
|
}
|
|
@@ -155,6 +159,37 @@ export default class wahelper {
|
|
|
155
159
|
return null;
|
|
156
160
|
}
|
|
157
161
|
|
|
162
|
+
async viewMessage(id = null) {
|
|
163
|
+
// lookup directly from database — no connection to daemon needed
|
|
164
|
+
try {
|
|
165
|
+
let message =
|
|
166
|
+
this.db
|
|
167
|
+
.prepare(
|
|
168
|
+
`
|
|
169
|
+
SELECT id, \`from\`, \`to\`, content, media_filename, timestamp
|
|
170
|
+
FROM messages
|
|
171
|
+
WHERE id = ?
|
|
172
|
+
LIMIT 1
|
|
173
|
+
`
|
|
174
|
+
)
|
|
175
|
+
.get(id) || null;
|
|
176
|
+
if (message === null) {
|
|
177
|
+
console.log('Message not found: ' + id);
|
|
178
|
+
this.write({ success: false, message: 'message_not_found', data: null }, true);
|
|
179
|
+
return { content: [{ type: 'text', text: 'Message not found: ' + id }], structuredContent: null };
|
|
180
|
+
}
|
|
181
|
+
console.log('Fetched message ' + id + ' from database.');
|
|
182
|
+
this.write({ success: true, message: 'message_fetched', data: message }, true);
|
|
183
|
+
return {
|
|
184
|
+
content: [{ type: 'text', text: 'Fetched message ' + id }],
|
|
185
|
+
structuredContent: message
|
|
186
|
+
};
|
|
187
|
+
} catch (error) {
|
|
188
|
+
this.log('⛔ Error fetching message from database: ' + error.message + ' (code: ' + error.code + ')');
|
|
189
|
+
}
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
|
|
158
193
|
async sendMessageToUser(number = null, message = null, attachments = null) {
|
|
159
194
|
let jid = this.formatNumber(number) + '@s.whatsapp.net';
|
|
160
195
|
this.log('begin send message to user ' + jid);
|