huebot.js
· 3.4 KiB · JavaScript
Surowy
#!/usr/bin/env node
// npm install slackbots node-telegram-bot-api
var TelegramBot = require('node-telegram-bot-api');
var SlackBot = require('slackbots');
// create a bot
var sBot = new SlackBot({
token: 'your-slack-bot-token', // Add a bot https://my.slack.com/services/new/bot and put the token
name: 'Telegram Bot'
});
var slackChannelName = 'your_slack_channel';
var token = 'your-telegram-bot-token'; // Generate one with BotFather
// Setup polling way
var tBot = new TelegramBot(token, {polling: true});
var tChatId = -123456; // Your telegram group ID
var slackBotRunning = false;
// Any kind of message
tBot.on('message', function (msg) {
var chatId = msg.chat.id;
if (slackBotRunning && msg.chat.id === tChatId) {
tBot.getUserProfilePhotos(msg.from.id).then(function(data) {
if (data.total_count > 0) {
var f = data.photos[0][0].file_id;
tBot.getFileLink(f).then(function(fileURI) {
sendSlackMessage(msg.from.first_name + " " + msg.from.last_name, msg.text, fileURI);
});
} else {
sendSlackMessage(msg.from.first_name + " " + msg.from.last_name, msg.text);
}
});
}
});
function sendSlackMessage(name, message, image) {
console.log("(Slack) "+name+": "+message);
var params = {};
sBot.name = name + " (Telegram)";
if (image !== undefined)
params.icon_url = image;
else
params.icon_url = 'https://f2rank.noservidor.com.br/img/logo.png';
sBot.postMessageToGroup('huebr_international', message, params);
}
sBot.on('start', function() {
sBot.on('open', function() {
console.log("SlackBot running");
slackBotRunning = true;
var params = {
icon_url: 'https://f2rank.noservidor.com.br/img/logo.png'
};
sendSlackMessage("Telegram Bot", "I'm online! YEY!");
tBot.sendMessage(tChatId, "I'm online. YEY!");
var users = {};
sBot.getUsers().then(function(userlist) {
console.log("Loaded "+userlist.members.length+" users.");
for (var userC in userlist.members) {
var user = userlist.members[userC];
users[user.id] = user;
}
});
sBot.on('message', function(data) {
if (data.type === "message" && data.subtype !== 'bot_message' && data.subtype !== 'file_share') {
var username = "Unknown";
if (data.user in users)
username = users[data.user].real_name + "[" + users[data.user].name + "]";
console.log("(Telegram) ["+data.subtype+"] "+username+": "+data.text);
tBot.sendMessage(tChatId, username+": "+data.text);
} else if (data.type === "file_shared") {
var fileUrl = data.file.url;
var fileName = data.file.title;
var filemime = data.file.mimetype;
var comment = data.file.initial_comment.comment;
var username = "Unknown";
if (data.file.initial_comment.user in users)
username = users[data.file.initial_comment.user].real_name + "[" + users[data.file.initial_comment.user].name + "]";
console.log("(Telegram) "+username+" sent a file ("+fileName+"): "+comment);
if (filemime.indexOf("image") > -1) {
tBot.sendPhoto(tChatId, rq.get(fileUrl), {
caption: username + ": "+comment
});
} else {
console.log("Unhandled mimetype: "+filemime);
}
} else {
console.log("Generic Message: ",data);
}
});
});
});
| 1 | #!/usr/bin/env node |
| 2 | |
| 3 | // npm install slackbots node-telegram-bot-api |
| 4 | |
| 5 | var TelegramBot = require('node-telegram-bot-api'); |
| 6 | var SlackBot = require('slackbots'); |
| 7 | |
| 8 | // create a bot |
| 9 | var 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 | |
| 14 | var slackChannelName = 'your_slack_channel'; |
| 15 | |
| 16 | var token = 'your-telegram-bot-token'; // Generate one with BotFather |
| 17 | // Setup polling way |
| 18 | var tBot = new TelegramBot(token, {polling: true}); |
| 19 | var tChatId = -123456; // Your telegram group ID |
| 20 | var slackBotRunning = false; |
| 21 | // Any kind of message |
| 22 | tBot.on('message', function (msg) { |
| 23 | var chatId = msg.chat.id; |
| 24 | if (slackBotRunning && msg.chat.id === tChatId) { |
| 25 | tBot.getUserProfilePhotos(msg.from.id).then(function(data) { |
| 26 | if (data.total_count > 0) { |
| 27 | var f = data.photos[0][0].file_id; |
| 28 | tBot.getFileLink(f).then(function(fileURI) { |
| 29 | sendSlackMessage(msg.from.first_name + " " + msg.from.last_name, msg.text, fileURI); |
| 30 | }); |
| 31 | } else { |
| 32 | sendSlackMessage(msg.from.first_name + " " + msg.from.last_name, msg.text); |
| 33 | } |
| 34 | }); |
| 35 | } |
| 36 | }); |
| 37 | |
| 38 | function sendSlackMessage(name, message, image) { |
| 39 | console.log("(Slack) "+name+": "+message); |
| 40 | var params = {}; |
| 41 | sBot.name = name + " (Telegram)"; |
| 42 | if (image !== undefined) |
| 43 | params.icon_url = image; |
| 44 | else |
| 45 | params.icon_url = 'https://f2rank.noservidor.com.br/img/logo.png'; |
| 46 | sBot.postMessageToGroup('huebr_international', message, params); |
| 47 | } |
| 48 | |
| 49 | sBot.on('start', function() { |
| 50 | sBot.on('open', function() { |
| 51 | console.log("SlackBot running"); |
| 52 | slackBotRunning = true; |
| 53 | var params = { |
| 54 | icon_url: 'https://f2rank.noservidor.com.br/img/logo.png' |
| 55 | }; |
| 56 | |
| 57 | sendSlackMessage("Telegram Bot", "I'm online! YEY!"); |
| 58 | tBot.sendMessage(tChatId, "I'm online. YEY!"); |
| 59 | |
| 60 | var users = {}; |
| 61 | |
| 62 | sBot.getUsers().then(function(userlist) { |
| 63 | console.log("Loaded "+userlist.members.length+" users."); |
| 64 | for (var userC in userlist.members) { |
| 65 | var user = userlist.members[userC]; |
| 66 | users[user.id] = user; |
| 67 | } |
| 68 | }); |
| 69 | |
| 70 | sBot.on('message', function(data) { |
| 71 | if (data.type === "message" && data.subtype !== 'bot_message' && data.subtype !== 'file_share') { |
| 72 | var username = "Unknown"; |
| 73 | if (data.user in users) |
| 74 | username = users[data.user].real_name + "[" + users[data.user].name + "]"; |
| 75 | console.log("(Telegram) ["+data.subtype+"] "+username+": "+data.text); |
| 76 | tBot.sendMessage(tChatId, username+": "+data.text); |
| 77 | } else if (data.type === "file_shared") { |
| 78 | var fileUrl = data.file.url; |
| 79 | var fileName = data.file.title; |
| 80 | var filemime = data.file.mimetype; |
| 81 | var comment = data.file.initial_comment.comment; |
| 82 | var username = "Unknown"; |
| 83 | if (data.file.initial_comment.user in users) |
| 84 | username = users[data.file.initial_comment.user].real_name + "[" + users[data.file.initial_comment.user].name + "]"; |
| 85 | |
| 86 | console.log("(Telegram) "+username+" sent a file ("+fileName+"): "+comment); |
| 87 | if (filemime.indexOf("image") > -1) { |
| 88 | tBot.sendPhoto(tChatId, rq.get(fileUrl), { |
| 89 | caption: username + ": "+comment |
| 90 | }); |
| 91 | } else { |
| 92 | console.log("Unhandled mimetype: "+filemime); |
| 93 | } |
| 94 | } else { |
| 95 | console.log("Generic Message: ",data); |
| 96 | } |
| 97 | }); |
| 98 | }); |
| 99 | }); |