diff --git a/server.js b/server.js index c5093df..5619d5c 100644 --- a/server.js +++ b/server.js @@ -1,108 +1,20 @@ +var TelegramBot = require('node-telegram-bot-api'); -// OpenShift sample Node application -var express = require('express'), - fs = require('fs'), - app = express(), - eps = require('ejs'), - morgan = require('morgan'); - -Object.assign=require('object-assign') +var token = 'YOUR_TELEGRAM_BOT_TOKEN'; +// Setup polling way +var bot = new TelegramBot(token, {polling: true}); -app.engine('html', require('ejs').renderFile); -app.use(morgan('combined')) - -var port = process.env.PORT || process.env.OPENSHIFT_NODEJS_PORT || 8080, - ip = process.env.IP || process.env.OPENSHIFT_NODEJS_IP || '0.0.0.0', - mongoURL = process.env.OPENSHIFT_MONGODB_DB_URL || process.env.MONGO_URL, - mongoURLLabel = ""; - -if (mongoURL == null && process.env.DATABASE_SERVICE_NAME) { - var mongoServiceName = process.env.DATABASE_SERVICE_NAME.toUpperCase(), - mongoHost = process.env[mongoServiceName + '_SERVICE_HOST'], - mongoPort = process.env[mongoServiceName + '_SERVICE_PORT'], - mongoDatabase = process.env[mongoServiceName + '_DATABASE'], - mongoPassword = process.env[mongoServiceName + '_PASSWORD'] - mongoUser = process.env[mongoServiceName + '_USER']; - - if (mongoHost && mongoPort && mongoDatabase) { - mongoURLLabel = mongoURL = 'mongodb://'; - if (mongoUser && mongoPassword) { - mongoURL += mongoUser + ':' + mongoPassword + '@'; - } - // Provide UI label that excludes user id and pw - mongoURLLabel += mongoHost + ':' + mongoPort + '/' + mongoDatabase; - mongoURL += mongoHost + ':' + mongoPort + '/' + mongoDatabase; - - } -} -var db = null, - dbDetails = new Object(); - -var initDb = function(callback) { - if (mongoURL == null) return; - - var mongodb = require('mongodb'); - if (mongodb == null) return; - - mongodb.connect(mongoURL, function(err, conn) { - if (err) { - callback(err); - return; - } - - db = conn; - dbDetails.databaseName = db.databaseName; - dbDetails.url = mongoURLLabel; - dbDetails.type = 'MongoDB'; - - console.log('Connected to MongoDB at: %s', mongoURL); - }); -}; - -app.get('/', function (req, res) { - // try to initialize the db on every request if it's not already - // initialized. - if (!db) { - initDb(function(err){}); - } - if (db) { - var col = db.collection('counts'); - // Create a document with request IP and current time of request - col.insert({ip: req.ip, date: Date.now()}); - col.count(function(err, count){ - res.render('index.html', { pageCountMessage : count, dbInfo: dbDetails }); - }); - } else { - res.render('index.html', { pageCountMessage : null}); - } +// Matches /echo [whatever] +bot.onText(/\/echo (.+)/, function (msg, match) { + var fromId = msg.from.id; + var resp = match[1]; + bot.sendMessage(fromId, resp); }); -app.get('/pagecount', function (req, res) { - // try to initialize the db on every request if it's not already - // initialized. - if (!db) { - initDb(function(err){}); - } - if (db) { - db.collection('counts').count(function(err, count ){ - res.send('{ pageCount: ' + count + '}'); - }); - } else { - res.send('{ pageCount: -1 }'); - } +// Any kind of message +bot.on('message', function (msg) { + var chatId = msg.chat.id; + // photo can be: a file path, a stream or a Telegram file_id + var photo = 'cats.png'; + bot.sendPhoto(chatId, photo, {caption: 'Lovely kittens'}); }); - -// error handling -app.use(function(err, req, res, next){ - console.error(err.stack); - res.status(500).send('Something bad happened!'); -}); - -initDb(function(err){ - console.log('Error connecting to Mongo. Message:\n'+err); -}); - -app.listen(port, ip); -console.log('Server running on http://%s:%s', ip, port); - -module.exports = app ;