Add files via upload

This commit is contained in:
Fernando Méndez
2021-02-02 11:03:35 +01:00
committed by GitHub
commit 676a7db96e
11 changed files with 1645 additions and 0 deletions

View File

@ -0,0 +1,109 @@
# FDIeSports_bot 🤖
## Índice
1. [Descripción](#1-descripción-)
2. [Autor](#2-autor-%EF%B8%8F)
3. [Advertencia](#3-advertencia-%EF%B8%8F)
4. [Generar un token con @BotFather](#4-generar-un-token-con-botfather)
5. [Ejecución](#5-ejecución-%EF%B8%8F)
* 5.1. [Instalación _node_modules_](#instalación-node_modules-)
* 5.2. [Poner el Bot en producción](#poner-el-bot-en-producción-%EF%B8%8F)
* 5.2.1. [En Windows](#en-windows-)
* 5.2.2. [En Linux](#en-linux-debianubuntu-)
* 5.3 [Añadir nuevas librerías](#53-añadir-nuevas-librerías-)
6. [Licencia](#6-licencia-)
7. [Enlace al Bot](#7-enlace-al-bot-)
***
## 1. Descripción 📖
Bot de Telegram para la agrupación de esports de la Facultad de Informática de la Universidad Complutense de Madrid.
***
## 2. Autor ✒️
Fernando Méndez (https:/fermdez.ddns.net | @HumperCobra)
***
## 3. Advertencia ⚠️
Desbes generar tu propio token para el bot y añadirlo a _const token = 'AQUÍ_A_TU_TOKEN';_ en el archivo *bot.js*.
***
## 4. Generar un token con @BotFather
1. Inicia un chat con https://t.me/botfather
2. Escribe en el chat el comando */newbot*
3. Te pedirá el alias y luego el nombre del bot (debe contener la palabra _bot_).
4. Nos devolverá el token de nuestro bot, por ejemplo:
> Use this token to access the HTTP API: 668219748:ABCRTZu7zNT5QO2bRfZfbPIXBLXb2U-ojVX
***
## 5. Ejecución 🛠️
### 5.1 Instalación _node_modules_ 🔧
1. Creamos un directorio para el bot y guardamos ahí el archivo *bot.js*.
2. Instalar *node.js*
* En Windows/Mac: https://nodejs.org/es/download/.
* Si tienes Linux (Debian/Ubuntu), usa los siguientes comandos:
```
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install curl
$ cd ~
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get install -y nodejs
$ cd ./ruta_del_directorio_del_bot/
$ npm install
```
3. Comprobar que se ha instalado con el comando:
```
>/$ node --version
```
4. Dentro del directorio del bot, ejecutar los siguientes comandos:
```
>/$ npm init --yes
>/$ npm install --save node-telegram-bot-api
```
5. Comprobar que se ha generado el directorio _node_modules_.
### 5.2 Poner el Bot en producción ⚙️
#### 5.2.1 En Windows 💻
* Instala *nodejs*, si no lo hiciste en el punto anterior: https://nodejs.org/es/download/
* Ejecutar en CMD o PS los comandos:
```
> cd ./ruta_del_directorio_del_bot/
> node bot.js
```
* El proceso se puede automatizar creando un archivo .bat y añadiéndolo al programador de tareas.
#### 5.2.2 En Linux (Debian/Ubuntu) 🐧
* Instalamos *nodejs*, si no lo hicimos en el punto anterior:
```
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install curl
$ cd ~
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get install -y nodejs
$ cd ./ruta_del_directorio_del_bot/
$ npm install
```
* Ejecutamos el bot con el comando:
```
$ node bot.js
```
* El proceso se puede automatizar creando un script.
### 5.3 Añadir nuevas librerías 📚
* Primero abrir un terminal/PowerShell/CMD (dependiendo de nuestro SO) e ir al directorio de nuestro bot:
```
cd ./ruta_del_directorio_del_bot/
```
* Si por ejemplo queremos añadir la librería _weather-js_, deberemos escribir el siguiente comando:
```
npm install weather-js
```
***
## 6. Licencia 📄
Educational Community License v2.0 (ECL-2.0).
## 7. Enlace al Bot 🤖
> https://t.me/FDIeSports_bot

View File

@ -0,0 +1,178 @@
/*
{
"name": "FDIeSports_bot",
"version": "1.0.0",
"description": "Bot oficial de la agrupación de esports de la Facultad de Informática de la Universidad Complutense de Madrid.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "Fernando Méndez Torrubiano",
"license": "Educational Community License v2.0 (ECL-2.0)",
"dependencies": {
"node-telegram-bot-api": "^0.51.0"
}
}
*/
// Importar las librerías:
const TelegramBot = require('node-telegram-bot-api');
// Token del bot:
const token = '1650731934:AAHYXV0t1hwE0j2TbcVFMXWQEfFulyj4BfU';
// Create the bot:
const bot = new TelegramBot(token, {polling:true});
// Palabras reservadas:
//const _despacho = new RegExp(/\b([Dd]espacho)\b/);
// Captura de errores:
bot.on('polling_error', function(error){
console.log(error);
});
// Inicio del bot:
bot.onText(/^\/start/, function(msg){
var chatId = msg.chat.id;
var nameUser = msg.from.first_name;
bot.sendMessage(chatId, "*Bienvenido al bot de asistencia de FDIeSports*, " + "*"+nameUser+"*" + ".", {parse_mode : "Markdown"});
bot.sendPhoto(chatId, "https://esports.fdi.ucm.es/images/LOGO.png",
{caption: "Nacida como una agrupación de equipos de eSports para la Facultad de Informática y formada por alumnos de toda la Universidad Complutense de Madrid.\n" +
"FDIeSports está respaldada por la histórica Asociación Diskóbolo."});
menu(msg);
});
// Llama al menú interactivo de ayuda:
bot.onText(/^\/help/, (msg) => {
menu(msg);
});
// Menú interactivo de ayuda:
function menu(msg){
var chatId = msg.chat.id;
bot.sendMessage(chatId, "<b>Selecciona una opción</b> (escribe /help para volver a mostrar este menú): ",
{
reply_markup: {
inline_keyboard: [
[
{
text:"Grupos de Whatsapp de los equipos📱", callback_data: 'grupos'
}
],
[
{
//text:"Inscripción", callback_data: 'registro'
text:"Inscripción👤", url: "https://esports.fdi.ucm.es/registro"
},
{
text:"Despacho📍", callback_data: 'despacho'
}
],
[
{
text:"Redes Sociales💙", callback_data: 'redes'
}
],
[
{
text:"Contacto📞", url: "https://esports.fdi.ucm.es/#four"
}
],
]
},
parse_mode:"HTML",
});
}
// Respuestas a la pulsación de botones:
bot.on('callback_query', function onCallbackQuery(accionboton){
const data = accionboton.data;
const msg = accionboton.message;
var chatId = msg.chat.id;
if(data == 'grupos'){
whatsapp(msg);
}
if(data == 'registro'){
registrar(msg);
}
if(data == 'despacho'){
bot.sendMessage(chatId, "Aquí tienes la localización del despacho de *Diskobolo/FDIeSports*:", {parse_mode: "Markdown"});
bot.sendLocation(chatId, 40.45365669535852, -3.73307118835828177);
}
if(data == 'redes'){
redes(msg);
}
});
// Registro de usuario en la base de datos (EN DESARROLLO):
function registrar(msg){
var opts = {
reply_markup: JSON.stringify({
keyboard: [
[{text: 'Enviar datos', request_contact: true}],
[{text: 'Cancelar', request_contact: false}],
],
resize_keyboard: true,
one_time_keyboard: true,
}),
};
bot.sendMessage(msg.chat.id, 'Formulario de registro: ', opts);
bot.on('contact', (msg) => {
console.log("Nombre: " + msg.contact.first_name /*+ "\nApodo: " + msg.contact.username*/ + "\nUserID:" + msg.contact.user_id + "\nNúmero Telf: " + msg.contact.phone_number);
bot.sendMessage(msg.chat.id, "*"+msg.contact.first_name+"*" + ", *te has registrado en FDIeSports, correctamente*.", {parse_mode: "Markdown"});
whatsapp(msg);
});
}
// Muestra los grupos de Whastapp de los equipos:
function whatsapp(msg){
bot.sendMessage(msg.chat.id, "Seleccione el equipo al que quiere unirse: ", {
reply_markup: {
inline_keyboard: [
[
{text: "Equipo de LOL", url: "https://chat.whatsapp.com/5enTKgyYdefKNBpBq10igX"}
],
[
{text: "Equipo de CSGO", url: "https://chat.whatsapp.com/CZJZshnndo6AUSveLMh2e1X"},
{text: "Equipo de OverWatch", url: "https://chat.whatsapp.com/3dN1UvXj6WO3oeqIMTWHW2"}
],
[
{text: "Equipo de Valorant", url: "https://chat.whatsapp.com/E2J2WgW676TKZB8el8ODyo"}
]
]
}
});
}
// Muestra las redes sociales de FDIeSports:
function redes(msg){
bot.sendMessage(msg.chat.id, "*Síguenos* en nuestras principales redes sociales: ", {
reply_markup: {
inline_keyboard: [
[
{text: "Discord🎧", url: "https://discordapp.com/invite/zjAdrfz"}
],
[
{text: "Twitter🐦", url: "https://twitter.com/FDIeSports"},
{text: "Web🌐", url: "https://esports.fdi.ucm.es/"}
],
]
},
parse_mode: "Markdown",
});
}
bot.onText(/^\/author/, function(msg){
var chatId = msg.chat.id;
bot.sendMessage(chatId, "Autor👤: *Fernando Méndez 'Humpercobra'* \n" +
"Web🌐: https://fermdez.ddns.net", {parse_mode : "Markdown"})
});

View File

@ -0,0 +1,15 @@
{
"name": "FDIeSports_bot",
"version": "1.0.0",
"description": "Bot oficial de la agrupación de esports de la Facultad de Informática de la Universidad Complutense de Madrid.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "Fernando Méndez Torrubiano",
"license": "Educational Community License v2.0 (ECL-2.0)",
"dependencies": {
"node-telegram-bot-api": "^0.51.0"
}
}