@patricktobias86/node-red-telegram-account 1.1.21 → 1.1.22

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/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [1.1.22] - 2026-01-12
6
+ ### Fixed
7
+ - Receiver node now handles additional MTProto update types that were being silently dropped:
8
+ - `UpdateNewScheduledMessage` - Scheduled messages
9
+ - `UpdateDeleteScheduledMessages` - Deleted scheduled messages
10
+ - `UpdateBotNewBusinessMessage` - Telegram Business account messages
11
+ - `UpdateBotEditBusinessMessage` - Edited business messages
12
+ - `UpdateBotDeleteBusinessMessage` - Deleted business messages
13
+ - `UpdateQuickReplyMessage` - Quick reply messages
14
+ - `UpdateReadStories` - Story read updates
15
+
5
16
  ## [1.1.21] - 2026-01-06
6
17
  ### Fixed
7
18
  - Receiver node now correctly handles messages from channels when the sender is an anonymous admin, ensuring such messages are processed and not dropped.
package/nodes/receiver.js CHANGED
@@ -321,10 +321,23 @@ const extractMessageEvents = (rawUpdate) => {
321
321
  return;
322
322
  }
323
323
 
324
+ // Handle all known message-bearing update types.
325
+ // Standard message updates:
324
326
  if (className === 'UpdateNewMessage' ||
325
327
  className === 'UpdateNewChannelMessage' ||
326
328
  className === 'UpdateEditMessage' ||
327
- className === 'UpdateEditChannelMessage') {
329
+ className === 'UpdateEditChannelMessage' ||
330
+ // Scheduled message updates:
331
+ className === 'UpdateNewScheduledMessage' ||
332
+ className === 'UpdateDeleteScheduledMessages' ||
333
+ // Business account message updates (Telegram Business API):
334
+ className === 'UpdateBotNewBusinessMessage' ||
335
+ className === 'UpdateBotEditBusinessMessage' ||
336
+ className === 'UpdateBotDeleteBusinessMessage' ||
337
+ // Quick reply message updates:
338
+ className === 'UpdateQuickReplyMessage' ||
339
+ // Read stories (contains message-like content):
340
+ className === 'UpdateReadStories') {
328
341
  if (update.message) {
329
342
  results.push({ update, message: update.message });
330
343
  } else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patricktobias86/node-red-telegram-account",
3
- "version": "1.1.21",
3
+ "version": "1.1.22",
4
4
  "description": "Node-RED nodes to communicate with GramJS.",
5
5
  "main": "nodes/config.js",
6
6
  "keywords": [
@@ -142,4 +142,89 @@ describe('Receiver node', function() {
142
142
  assert.strictEqual(sent[0].payload.chatId, 2877134366);
143
143
  assert.strictEqual(sent[0].payload.senderId, 6304354944);
144
144
  });
145
+
146
+ it('handles UpdateNewScheduledMessage updates', function() {
147
+ const { NodeCtor, addCalls } = load();
148
+ const sent = [];
149
+ const node = new NodeCtor({config:'c', ignore:'', ignoreMessageTypes:'', maxFileSizeMb:''});
150
+ node.send = (msg) => sent.push(msg);
151
+ const handler = addCalls[0].fn;
152
+
153
+ handler({
154
+ className: 'UpdateNewScheduledMessage',
155
+ message: {
156
+ id: 456,
157
+ fromId: { userId: 789, className: 'PeerUser' },
158
+ peerId: { userId: 789, className: 'PeerUser' },
159
+ message: 'scheduled message',
160
+ date: 1234567890
161
+ }
162
+ });
163
+
164
+ assert.strictEqual(sent.length, 1);
165
+ assert.strictEqual(sent[0].payload.message.message, 'scheduled message');
166
+ });
167
+
168
+ it('handles UpdateBotNewBusinessMessage updates', function() {
169
+ const { NodeCtor, addCalls } = load();
170
+ const sent = [];
171
+ const node = new NodeCtor({config:'c', ignore:'', ignoreMessageTypes:'', maxFileSizeMb:''});
172
+ node.send = (msg) => sent.push(msg);
173
+ const handler = addCalls[0].fn;
174
+
175
+ handler({
176
+ className: 'UpdateBotNewBusinessMessage',
177
+ message: {
178
+ id: 123,
179
+ fromId: { userId: 456, className: 'PeerUser' },
180
+ peerId: { userId: 789, className: 'PeerUser' },
181
+ message: 'business message'
182
+ }
183
+ });
184
+
185
+ assert.strictEqual(sent.length, 1);
186
+ assert.strictEqual(sent[0].payload.message.message, 'business message');
187
+ });
188
+
189
+ it('handles UpdateBotEditBusinessMessage updates', function() {
190
+ const { NodeCtor, addCalls } = load();
191
+ const sent = [];
192
+ const node = new NodeCtor({config:'c', ignore:'', ignoreMessageTypes:'', maxFileSizeMb:''});
193
+ node.send = (msg) => sent.push(msg);
194
+ const handler = addCalls[0].fn;
195
+
196
+ handler({
197
+ className: 'UpdateBotEditBusinessMessage',
198
+ message: {
199
+ id: 123,
200
+ fromId: { userId: 456, className: 'PeerUser' },
201
+ peerId: { userId: 789, className: 'PeerUser' },
202
+ message: 'edited business message'
203
+ }
204
+ });
205
+
206
+ assert.strictEqual(sent.length, 1);
207
+ assert.strictEqual(sent[0].payload.message.message, 'edited business message');
208
+ });
209
+
210
+ it('handles UpdateQuickReplyMessage updates', function() {
211
+ const { NodeCtor, addCalls } = load();
212
+ const sent = [];
213
+ const node = new NodeCtor({config:'c', ignore:'', ignoreMessageTypes:'', maxFileSizeMb:''});
214
+ node.send = (msg) => sent.push(msg);
215
+ const handler = addCalls[0].fn;
216
+
217
+ handler({
218
+ className: 'UpdateQuickReplyMessage',
219
+ message: {
220
+ id: 999,
221
+ fromId: { userId: 111, className: 'PeerUser' },
222
+ peerId: { userId: 222, className: 'PeerUser' },
223
+ message: 'quick reply'
224
+ }
225
+ });
226
+
227
+ assert.strictEqual(sent.length, 1);
228
+ assert.strictEqual(sent[0].payload.message.message, 'quick reply');
229
+ });
145
230
  });