Ultima attività 1 month ago

Telegram <=> Slack Bot

Revisione fd05643f65ddc861c3c7c6ea57c73ca48db9d3ed

huebot.js Raw
1#!/usr/bin/env node
2
3// npm install slackbots node-telegram-bot-api
4
5var TelegramBot = require('node-telegram-bot-api');
6var SlackBot = require('slackbots');
7
8// create a bot
9var sBot = new SlackBot({
10 token: 'your-slack-bot-token', // Add a bot https://my.slack.com/services/new/bot and put the token
11 name: 'Telegram Bot'
12});
13
14var slackChannelName = 'your_slack_channel';
15
16var token = 'your-telegram-bot-token'; // Generate one with BotFather
17// Setup polling way
18var tBot = new TelegramBot(token, {polling: true});
19var tChatId = -123456; // Your telegram group ID
20var slackBotRunning = false;
21
22// Any kind of message
23tBot.on('message', function (msg) {
24 var chatId = msg.chat.id;
25 if (slackBotRunning && msg.chat.id === tChatId) {
26 tBot.getUserProfilePhotos(msg.from.id).then(function(data) {
27 if (data.total_count > 0) {
28 var f = data.photos[0][0].file_id;
29 tBot.getFileLink(f).then(function(fileURI) {
30 sendSlackMessage(msg.from.first_name + " " + msg.from.last_name, msg.text, fileURI);
31 });
32 } else {
33 sendSlackMessage(msg.from.first_name + " " + msg.from.last_name, msg.text);
34 }
35 });
36 }
37});
38
39function sendSlackMessage(name, message, image) {
40 console.log("(Slack) "+name+": "+message);
41 var params = {};
42 sBot.name = name + " (Telegram)";
43 if (image !== undefined)
44 params.icon_url = image;
45 else
46 params.icon_emoji = ':cat:';
47 sBot.postMessageToGroup(slackChannelName, message, params);
48}
49
50sBot.on('start', function() {
51 sBot.on('open', function() {
52 console.log("SlackBot running");
53 slackBotRunning = true;
54 var params = {
55 icon_emoji: ':cat:'
56 };
57
58 sendSlackMessage("Telegram Bot", "I'm online! YEY!");
59 tBot.sendMessage(tChatId, "I'm online. YEY!");
60
61 var users = {};
62
63 sBot.getUsers().then(function(userlist) {
64 console.log("Loaded "+userlist.members.length+" users.");
65 for (var userC in userlist.members) {
66 var user = userlist.members[userC];
67 users[user.id] = user;
68 }
69 });
70
71 sBot.on('message', function(data) {
72 if (data.type === "message" && data.subtype !== 'bot_message') {
73 var username = "Unknown";
74 if (data.user in users)
75 username = users[data.user].real_name + "[" + users[data.user].name + "]";
76 console.log("(Telegram) "+username+": "+data.text);
77 tBot.sendMessage(tChatId, username+": "+data.text);
78 } else {
79 console.log("Generic Message: ",data);
80 }
81 });
82 });
83});