Bot de Telegram para recibir las últimas noticias publicadas en la página web de la Consejería de Educación de la Junta de Andalucía.
bot.py
bot-heroku.py
- Referencias
- Créditos
Clonamos el repositorio:
git clone https://github.com/josejuansanchez/novedades-educacion-andalucia.git
Accedemos al directorio config
:
cd novedades-educacion-andalucia/educabot/config
Creamos un nuevo archivo de configuración con el nombre config.json
a partir del archivo de ejemplo config.example.json
:
cp config.example.json config.json
Una vez que hemos creado el archivo config.json
tenemos que configurar los parámetros de nuestro bot.
bot-token
: Es el token que Telegram nos devuelve al crear nuestro bot.database
: Es la ruta y el nombre de nuestra base de datos sqlite.urls
: Es la lista de urls con los feeds RSS que queremos parsear.
{
"bot-token" : "PUT-YOUR-TELEGRAM-BOT-TOKEN-HERE",
"database_path" : "database/educabot.sqlite",
"sources" : [
{
"name" : "Alumnado",
"url" : "http://www.juntadeandalucia.es/educacion/portals/delegate/rss/ced/portalconsejeria/alumnado/-/-/true/AND/true/ishare_noticefrom/DESC/"
},
{
"name" : "Profesorado",
"url" : "http://www.juntadeandalucia.es/educacion/portals/delegate/rss/ced/portalconsejeria/profesorado/-/-/true/OR/_self/ishare_noticefrom/DESC/"
},
{
"name" : "Familias",
"url" : "http://www.juntadeandalucia.es/educacion/portals/delegate/rss/ced/portalconsejeria/familia/-/-/true/AND/false/ishare_noticefrom/DESC/"
},
{
"name" : "Centros",
"url" : "http://www.juntadeandalucia.es/educacion/portals/delegate/rss/ced/portalconsejeria/centro-1/-/-/true/OR/true/cm_modified/DESC/"
}
]
}
Instalamos virtualenv
con pip3
:
pip3 install virtualenv
Comprobamos que se ha instalado correctamente:
virtualenv --version
Creamos un entorno virtual para nuestro proyecto:
virtualenv my_virtualenv
Para poder usar nuestro entorno virtual es necesario activarlo:
source my_virtualenv/bin/activate
Para desactivar el entorno virtual ejecutaremos:
deactivate
Instalamos los paquetes necesarios para trabajar con nuestro proyecto. La lista de paquetes está definida en el archivo requirements.txt
:
(my_virtualenv)$ pip3 install -r requirements.txt
Para iniciar el bot ejecutaremos:
(my_virtualenv)$ python3 bot.py
Instalaremos Heroku CLI para poder crear y administrar aplicaciones en Heroku desde la línea de comandos.
También vamos a necesitar dos archivos especiales: runtime.txt
y Procfile
.
- El archivo
runtime.txt
contiene la versión de python con la que se ejecutará nuestro bot.
python-3.6.4
bot: cd educabot && python3 bot-heroku.py
El archivo bot-heroku.py
contiene el código del bot que desplegaremos en Heroku. En este archivo el token de Telegram se gestiona con una variable de entorno del sistema. En nuestro caso será la variable BOT_TOKEN
.
self.updater = Updater(os.environ['BOT_TOKEN'])
Esta variable se puede configurar desde la línea de comandos con las utilidades que hemos instalado con Heroku CLI o también se puede configurar desde el panel de control web donde administramos nuestras aplicaciones en Heroku.
Por ejemplo, desde la línea de comandos con Heroku CLI ejecutaríamos:
heroku config:set BOT_TOKEN=123456789:AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLL
La secuencia de comandos que habría que ejecutar para desplegar el bot en Heroku es la siguiente:
heroku login
heroku create --region eu novedades-educacion-bot
git push heroku master
heroku config:set BOT_TOKEN=123456789:AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLL
heroku ps:scale bot=1
Para consultar el archivo de log podemos usar:
heroku logs --tail
Para detener la ejecución del bot usamos:
heroku ps:stop bot
Puedes encontrar más información sobre cómo desplegar con Git en Heroku en la documentación oficial.
- Bots: An introduction for developers.
- Hosting telegram bot on Heroku for free.
- Polling vs WebHooks in Telegram Bots.
Se han utilizado los siguientes ejemplos y librerías:
Este bot ha sido desarrollado por José Juan Sánchez.
Copyright 2017 José Juan Sánchez
Licensed under the GNU General Public License, Version 3 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.gnu.org/licenses/gpl-3.0.en.html
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.