Skip to content

Commit fd0b413

Browse files
author
windka
committed
added raw events
1 parent 8df515a commit fd0b413

File tree

4 files changed

+52
-15
lines changed

4 files changed

+52
-15
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
# Changelog
22
All notable changes to this project will be documented in this file.
33

4+
# [0.1.2] - 2023-10-09
5+
### added raw events
6+
47
# [0.1.1] - 2023-10-08
58
### login with bot token added - [#1](https://github.com/windkh/node-red-node-telegrambot/issues/1)
69

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "node-red-node-telegrambot",
3-
"version": "0.1.1",
3+
"version": "0.1.2",
44
"description": "Telegram userbot nodes for Node-RED",
55
"dependencies": {
66
"telegram": "^2.18.38"

telegrambot/telegrambot.html

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,8 @@ <h3>Details</h3>
226226
color: '#3BABDD',
227227
defaults: {
228228
name: { value: "" },
229-
bot: { value:"", type: "telegram client config", required: true }
229+
bot: { value:"", type: "telegram client config", required: true },
230+
sendrawevents: { value: false, required: false },
230231
},
231232
inputs: 0,
232233
outputs: 1,
@@ -252,6 +253,16 @@ <h3>Details</h3>
252253
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
253254
<input type="text" id="node-input-name" placeholder="Name">
254255
</div>
256+
257+
<hr align="middle"/>
258+
259+
<div class="form-row">
260+
<label for="node-config-input-sendrawevents"><i class="fa fa-filter"></i> Send raw events</label>
261+
<input type="checkbox" id="node-config-input-sendrawevents" style="display: inline-block; width: auto; vertical-align: top;">
262+
</div>
263+
264+
<div class="form-tips" style="width: auto"><b>Tip:</b> When raw events is turned on, all events are sent to the output without further filtering.</div>
265+
255266
</script>
256267

257268
<script type="text/x-red" data-help-name="telegram client receiver">

telegrambot/telegrambot.js

Lines changed: 36 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ module.exports = function (RED) {
207207
}
208208

209209
await client.start(authParams);
210+
await client.connect();
210211
} else {
211212
node.warn('No session: login first.');
212213
}
@@ -250,27 +251,44 @@ module.exports = function (RED) {
250251
let node = this;
251252
this.bot = config.bot;
252253
this.config = RED.nodes.getNode(this.bot);
253-
this.eventHandlerAdded = false;
254+
this.sendRawEvents = config.sendrawevents || false;
255+
this.rawEventHandlerAdded = false;
256+
this.newMessageEventHandlerAdded = false;
254257

255-
const eventHandler = async function (event) {
256-
const message = event.message;
257-
const sender = await message.getSender();
258-
const chat = await message.getChat();
258+
this.rawEventHandler = async (event) => {
259+
let msg = {
260+
payload: event,
261+
};
262+
node.send(msg);
263+
};
264+
265+
this.newMessageEventHandler = async (event) => {
266+
let message = event.message;
259267
let msg = {
260268
payload: {
261-
sender: sender,
262-
chat: chat,
263269
message: message,
264-
originalUpdate: event.originalUpdate,
270+
sender: await message.getSender(),
271+
chat: await message.getChat(),
272+
event: event,
265273
},
266274
};
267275
node.send(msg);
268276
};
269277

270278
this.stop = async () => {
271-
if (node.eventHandlerAdded) {
272-
client.removeEventHandler(eventHandler, new NewMessage({}));
273-
node.eventHandlerAdded = false;
279+
if (node.config) {
280+
let client = await node.config.getTelegramClient(node);
281+
if (client) {
282+
if (node.rawEventHandlerAdded) {
283+
client.removeEventHandler(node.rawEventHandler);
284+
node.rawEventHandlerAdded = false;
285+
}
286+
287+
if (node.newMessageEventHandlerAdded) {
288+
client.removeEventHandler(node.newMessageEventHandler, new NewMessage({}));
289+
node.newMessageEventHandlerAdded = false;
290+
}
291+
}
274292
}
275293

276294
node.status({
@@ -290,8 +308,13 @@ module.exports = function (RED) {
290308
text: 'connected',
291309
});
292310

293-
client.addEventHandler(eventHandler, new NewMessage({}));
294-
node.eventHandlerAdded = true;
311+
if (node.sendRawEvents) {
312+
client.addEventHandler(node.rawEventHandler);
313+
node.rawEventHandlerAdded = true;
314+
} else {
315+
client.addEventHandler(node.newMessageEventHandler, new NewMessage({}));
316+
node.newMessageEventHandlerAdded = true;
317+
}
295318
}
296319
} else {
297320
// no config node?

0 commit comments

Comments
 (0)