@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 +11 -0
- package/nodes/receiver.js +14 -1
- package/package.json +1 -1
- package/test/receiver.test.js +85 -0
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
package/test/receiver.test.js
CHANGED
|
@@ -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
|
});
|