Skip to content

Commit

Permalink
Merge pull request #67 from ngVenezuela/develop
Browse files Browse the repository at this point in the history
Merge con develop v1.3.0
  • Loading branch information
leocabeza authored May 14, 2017
2 parents b6aba4f + bf4427f commit 5f2e8f1
Show file tree
Hide file tree
Showing 13 changed files with 328 additions and 270 deletions.
38 changes: 22 additions & 16 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,18 +1,24 @@
{
"env": {
"es6": true,
"node": true
},
"extends": "google",
"rules": {
"require-jsdoc": ["error", {
"require": {
"FunctionDeclaration": false,
"MethodDefinition": false,
"ClassDeclaration": false
}
}],
"max-len": ["error", 100],
"error": 0
}
"env": {
"es6": true,
"node": true
},
"extends": "airbnb",
"plugins": [
"react",
"jsx-a11y",
"import"
],
"rules": {
"comma-dangle": [
"error",
{
"arrays": "ignore",
"objects": "ignore",
"imports": "ignore",
"exports": "ignore",
"functions": "ignore"
}
]
}
}
71 changes: 39 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,74 +1,81 @@
# Wengy-ven

BOT de Bienvenida a nuevos integrantes del grupo [ngVenezuela OFF-TOPIC](https://telegram.me/ngvenezuela)
en Telegram.
> BOT de Bienvenida a nuevos integrantes del grupo [ngVenezuela](https://t.me/ngvenezuela)
en Telegram. Desarrollado con NodeJS y el API de Telegram.

## Comenzando
## Prerequisitos

Clonamos el proyecto con el comando: `git clone [email protected]:ngVenezuela/wengy-ven.git`
Antes de comenzar a trabajar con nuestro BOT, es necesario cumplir con los siguientes requisitos:

### Prerequisitos
- [Node v6.0 o superior](https://nodejs.org/en/)

Para poder tener un bot, es necesario crearlo, y obtener un token para el mismo, las
instrucciones las puedes consultar aquí: [¿Cómo creo un bot?](https://core.telegram.org/bots#3-how-do-i-create-a-bot).
Este bot nos va a servir para hacer nuestros desarrollos y/o pruebas.
Esta versión es necesaria debido a la compatibilidad de ES6, la cual no tiene gran soporte en [versiones anteriores](http://node.green/).

Luego de creado el bot, lo agregamos a un grupo:
[Agregar bot a un grupo](images/add-bot-to-group.jpg)
Y ya automáticamente quedará escuchando cualquier comando
- [Crear un BOT el Telegram](https://core.telegram.org/bots#3-how-do-i-create-a-bot)

Lo otro que debemos hacer es tener instalado una versión de [NodeJS](https://nodejs.org/en/) mayor a la v6.0, debido
a la compatibilidad de ES6 no tiene un gran soporte en [versiones anteriores](http://node.green/).
Para poder tener un bot, es necesario crearlo y así obtener un **Token** para el mismo. Este bot nos va a hacer posible nuestros desarrollos y/o pruebas.

### Instalando
- [Agregar el BOT a un grupo](https://raw.githubusercontent.com/ngVenezuela/wengy-ven/master/images/add-bot-to-group.jpg)

Instalamos todas las dependencias del proyecto con el comando: `npm install`
Luego de haber creado el BOT, lo agregamos a un grupo para que así escuche cualquier comando.


## Installación

Para comenzar a trabajar en nuestro BOT, abrimos nuestra _terminal_ y ejecutamos los siguientes comandos:

```bash
# Clonamos el proyecto.
$ git clone [email protected]:ngVenezuela/wengy-ven.git

# Accedemos al directorio donde se clonó nuestro proyecto.
$ cd wengy-ven

# Instalamos todas las dependencias del proyecto.
$ npm install
```

Por último creamos un archivo en el directorio `config/` llamado `config.js` con el formato
que tiene el archivo `config.sample.js`. En este nuevo archivo colocaremos nuestros token que
pudimos obtener durante la sección de Prerequisitos.
que tiene el archivo `config.sample.js`. En este nuevo archivo colocaremos el [Token](https://core.telegram.org/bots#3-how-do-i-create-a-bot) que
pudimos obtener previamente.

## Corriendo los tests

Corriendo pruebas:
```
Para ejecutar los tests (pruebas), simplemente ejecutamos los siguientes comandos:

```bash
$ npm run test

# También puedes activar el modo watch
$ npm run test:watch
```

## Despliegue

Para ejecutar este proyecto, debemos colocarnos sobre el directorio y correr el comando:
`node src/index.js'

## Construido con
Finalmente, para ejecutar nuestro BOT, nos aseguramos de estar en el directorio de nuestro proyecto y escribimos el siguiente comando en nuestra terminal:

* NodeJS
* API de Telegram
```bash
$ node src/index.js
```

## Contribuyendo

Por favor lee [CONTRIBUTING.md](.github/CONTRIBUTING.md) para los detalle de nuestro código de conducta,
y el proceso para enviarnos pull requests.
Te invitamos a leer el documento [CONTRIBUTING](.github/CONTRIBUTING.md) para conocer todos los detalle de nuestro código de conducta y el proceso para enviarnos _Pull Requests_.

## Versionado

Utilizamos [SemVer](http://semver.org/) para el versionado.
Para ver las versiones disponibles, mira los [tags en este repositorio](https://github.com/ngVenezuela/wengy-ven/tags).
Utilizamos [SemVer](http://semver.org/) para el versionado. Para ver las versiones disponibles de nuestro BOT, mira los [Tags](https://github.com/ngVenezuela/wengy-ven/tags) en este repositorio.

## Autores

* **Andrés Villanueva** - *Trabajo inicial* - [Villanuevand](https://github.com/Villanuevand)
* **Leonardo Cabeza** - *Código inicial* - [leocabeza](https://github.com/leocabeza)

Ver también la lista de [contribuyentes](https://github.com/ngVenezuela/wengy-ven/graphs/contributors) que participaron en este proyecto.
Y por acá puedes ver la lista completa de [contribuyentes](https://github.com/ngVenezuela/wengy-ven/graphs/contributors) que participaron en este proyecto.

## Licencia

Este proyecto está licenciado bajo la licencia MIT - ver el archivo [LICENSE](LICENSE) para más detalles.
Este proyecto está licenciado bajo la [Licencia MIT](https://github.com/ngVenezuela/wengy-ven/blob/master/LICENSE)

## Expresiones de gratitud

Expand Down
1 change: 1 addition & 0 deletions config/messages.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ const messages = {
'Buenos días',
'Buenos días a todos',
'Buenos días comunidad',
'Buenos días comunidad, Y como dice @frick: ¡A trabajar, vagos! Que los yates de sus jefes no se pagan solos'
],
},
newBlogPost: '*#{author}* ha agregado una nueva entrada al blog titulada: *#{title}* '+
Expand Down
10 changes: 4 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "wengy-ven",
"version": "1.0.0",
"version": "1.3.0",
"description": "Official telegram bot for the ng-Venezuela community",
"main": "index.js",
"scripts": {
Expand All @@ -23,14 +23,12 @@
},
"homepage": "https://github.com/ngVenezuela/wengy-ven#readme",
"dependencies": {
"feedparser": "2.0.0",
"feedparser": "^2.0.0",
"node-fetch": "^1.6.3",
"node-telegram-bot-api": "0.25.0"
"node-telegram-bot-api": "^0.27.1"
},
"devDependencies": {
"eslint": "3.13.1",
"eslint-config-google": "0.7.1",
"jest": "^19.0.2",
"jsdoc": "3.4.3"
"jsdoc": "^3.4.3"
}
}
32 changes: 15 additions & 17 deletions src/blog-event.js → src/events/blog.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,16 @@
'use strict';

const FeedParser = require('feedparser');
// eslint-disable-next-line import/no-extraneous-dependencies
const request = require('request');
const fs = require('fs');
const config = require('../config/config');
const events = require('events');
const config = require('./../../config/config');

let feedparser = new FeedParser();
let eventEmitter = new events.EventEmitter();
const feedparser = new FeedParser();
const eventEmitter = new events.EventEmitter();
let articles = [];
let lastPubDate;
let req;

setInterval(readLastPubDate, 60000 * 60 * 24); // check daily

module.exports = eventEmitter;

/**
* Check the blog feed for entries
*/
Expand Down Expand Up @@ -51,8 +46,8 @@ function makeRequest() {
*/
function readLastPubDate() {
try {
let data = fs.readFileSync('./config/last-blog-pubDate.json', 'utf8');
let parsed = JSON.parse(data);
const data = fs.readFileSync('./config/last-blog-pubDate.json', 'utf8');
const parsed = JSON.parse(data);
lastPubDate = new Date(parsed.lastPubDate);
makeRequest();
} catch (err) {
Expand All @@ -69,7 +64,7 @@ function lookupFinished() {
try {
fs.writeFileSync(
'./config/last-blog-pubDate.json',
JSON.stringify({'lastPubDate': articles[0].pubDate}),
JSON.stringify({ lastPubDate: articles[0].pubDate }),
'utf8'
);
lastPubDate = undefined;
Expand All @@ -79,18 +74,15 @@ function lookupFinished() {
feedparser.emit('error', new Error('Could not save file'));
}
}
};
}

/**
* we print errors in console.
* we capture 'lookupFinished' 'error' and
* execute corresponding function.
*/
feedparser.on('error', (error) => {
if (error === 'lookupFinished') {
lookupFinished();
} else {
console.log('error emitted: ', error);
}
});

Expand All @@ -115,8 +107,9 @@ feedparser.on('readable', () => {
let item;

if (lastPubDate !== undefined) {
// eslint-disable-next-line no-cond-assign
while (item = feedparser.read()) {
let itemPubDate = new Date(item.pubDate);
const itemPubDate = new Date(item.pubDate);
if (itemPubDate <= lastPubDate) {
/**
* This is the only way we can get
Expand All @@ -134,3 +127,8 @@ feedparser.on('readable', () => {
}
}
});

setInterval(readLastPubDate, 60000 * 60 * 24); // check daily

module.exports = eventEmitter;

29 changes: 29 additions & 0 deletions src/events/morning.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
const events = require('events');
const timeUtility = require('./../utils/time');

const eventEmitter = new events.EventEmitter();

/**
* this function emits an event
* with the current hour/minute &
* it also emits an event when it's
* a new day
*/
function emitMinuteMark() {
const vzlanHour = timeUtility.vzlanHour();
const vzlanMinute = timeUtility.vzlanMinute();

eventEmitter.emit(
'minuteMark',
vzlanHour,
vzlanMinute,
timeUtility.vzlanWeekday()
);
if (vzlanHour === 0 && vzlanMinute === 0) {
eventEmitter.emit('newDay');
}
}

setInterval(emitMinuteMark, 60 * 1000); // 60 seconds

module.exports = eventEmitter;
Loading

0 comments on commit 5f2e8f1

Please sign in to comment.