huebot.js
· 2.5 KiB · JavaScript
Sin formato
#!/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_emoji = ':cat:';
sBot.postMessageToGroup(slackChannelName, message, params);
}
sBot.on('start', function() {
sBot.on('open', function() {
console.log("SlackBot running");
slackBotRunning = true;
var params = {
icon_emoji: ':cat:'
};
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') {
var username = "Unknown";
if (data.user in users)
username = users[data.user].real_name + "[" + users[data.user].name + "]";
console.log("(Telegram) "+username+": "+data.text);
tBot.sendMessage(tChatId, username+": "+data.text);
} 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 | |
| 22 | // Any kind of message |
| 23 | tBot.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 | |
| 39 | function 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 | |
| 50 | sBot.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 | }); |