Nola sortu Telegramen bot bat

Unai Tolosa-ren avatar

Telegram mezularitza aplikazioa aspaldian egin zen ezaguna. Askok WhatsAppekin alderatzen badute ere, Telegram tresna ahaltsuagoa dugu. Telegramen, taldeak egiteko aukeraz gain, bot-ak eta difusio kanalak egin ditzakegu. Gainera, Euskaraz erabiltzeko aukera dugu aspalditik Gisa elkarteko, Gaueko Koop., Bitarlan eta Librezaleko lagunei esker.

Telegram zerbitzua zerbitzari pribatuetan dago, baina bezeroak libreak dira eta API irekia du. Honek bot-ak egiteko aukera ematen digu.

Gaurkoan @etziBot egingo dugu:

Bot-a sortu

Hasteko bot-aren interfazea sortuko dugu. Oraingoz ez du erantzunik emango.
Bot-a sortzeko mugikorra hartu eta Telegram aplikazioa @Botfather bilatuko dugu:


Bot kudeatzailea da hau. Ematen dituen aukerak ikusteko idatzi /help:


/newbot idatziko dugu gure bot berria sortzeko. Jarraibideei kasu egin eta izena idatzi:

eta horrela frontend-a sortu dugu. Adi, momentu honetan Api tokena jasoko dugu:


Token hori ondoren erabiliko dugu zerbitzaria konfiguratzeko, <zure_api_tokena> deituko diogu.


Interfazea konfiguratzen bukatzeko beste hainbat komando ditugu @BotFather-en. Kasu honetan, profil irudia sartuko diogu.
/setuserpic idatzi eta profil irudia sartu bot-ari:

Bot-aren zerbitzariko kodea

Bot-ari mezua bidaltzen zaion zerbitzariak bakoitzean /new-message api dei bezala jasotzen du. Beraz, zerbitzariak mezu horri erantzun egin beharko dio.

Zerbitzaria sortzen hasteko fitxategi bat sortuko dugu proiektuarentzat:

[code lang=”bash”]
$ mkdir etzi-bot [/code]

Proiektua jarriko dugun fitxategira sartu:

[code lang=”bash”]
$ cd etzi-bot [/code]

Npm instalatu eta proiektua hasieratu:

[code lang=”bash”]
$ sudo apt-get install npm
$ npm init [/code]

Exekutatzeko behar ditugun dependentziak instalatu:

[code lang=”bash”]
$ npm install –save express axios body-parser [/code]

  1. express gure aplikazio zerbitzaria.
  2. axios http bezero bat da.
  3. body-parser eskari bakoitzean jasotako erantzuna eraldatzen lagunduko digu.

[code lang=”bash”]
$ sudo nano index.js
[/code]

index.js dokumentuan hau sartuko dugu:

[code lang=”js”]var express = require(‘express’);
var app = express();
var bodyParser = require(‘body-parser’);
const axios = require(‘axios’)

app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({
extended: true
})); // for parsing application/x-www-form-urlencoded

//This is the route the API will call
app.post(‘/new-message’, function(req, res) {
const {message} = req.body

if (!message) { // Mezurik ez badago, bukatu.
return res.end()
}

// kaixo jasotzen badu Ph´nglui mglw´nafh Cthulhu R´lyeh wgah´nagl fhtagn erantzungo du
if (message.text.toLowerCase().indexOf(‘kaixo’) &gt;=0) {

axios.post(‘https://api.telegram.org/bot&lt;zure_api_tokena&gt;/sendMessage’, {
chat_id: message.chat.id,
text: ‘Ph\´nglui mglw\´nafh Cthulhu R\´lyeh wgah\´nagl fhtagn’
}).then(response =&gt; {
// Mezua ondo bidali da
console.log(‘Mezua bidalia’)
res.end(‘ok’)
}).catch(err =&gt; {
// …and here if it was not
console.log(‘Error :’, err)
res.end(‘Error :’ + err)
})
} // end if
});

// Gure zerbitzaria martxan jarri
app.listen(3000, function() {
console.log(‘Telegram bot-a 3000 portuan entzuten ari da!’);
});[/code]

Zerbitzaria martxan jarri

Sortutako kodea nahi den zerbitzarian jar dezakegu martxan. Edonork zerbitzari propioa ez duenez now zerbitzua erabiliko dugu:

[code lang=”bash”]
$ sudo npm install -g now
[/code]

#packege.json sortu edo gainidatzi:

[code lang=”bash”]
$ nano package.json
[/code]

Gure package.json horrela geratuko da:

[code lang=”js”]
{
"name": "etzi-bot",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" &amp;amp;amp;&amp;amp;amp; exit 1",
"start": "node index.js"
},
"author": "tolosa &lt;tolosa@talaios.net&gt; (https://etzi.pm)",
"license": "ISC",
"dependencies": {
"axios": "^0.16.1",
"body-parser": "^1.17.1",
"express": "^4.15.2"
},
"devDependencies": {},
"description": ""
}
[/code]

Hasierako script-a gehitu ondoren, exekutatu honako komandoa proiektua dagoen karpetan bertan:

[code lang=”bash”]
$ now #zerbitzua zerbitzarian martxan jarriko du
[/code]

Zerbitzua ondo jarri badu, martxan horrelako zerbait erantzungo du:

[code lang=”bash”]
&gt; Deploying ~/etzi-bot
&gt; Using Node.js 6.2.1 (default)
&gt; Ready! https://etzi-bot-zzzzz.now.sh
[/code]

Honenbestez, eman digun helbide horretan gure zerbitzua martxan edukiko dugu. Helbide hori hartu eta ondorengo aginduan sartuko dugu:

[code lang=”bash”]
curl -F "url=https://etzi-bot-zzzzz.now.sh/new-message" https://api.telegram.org/bot&lt;zure_api_tokena&gt;/setWebhook
[/code]

Erantzuna hau izango da:

[code lang=”bash”]
{"ok":true,"result":true,"description":"Webhook was set"}
[/code]

Dena ondo egin badugu gure Bot-a martxan edukiko dugu: @EtziBot

Iturria: http://www.sohamkamani.com/blog/2016/09/21/making-a-telegram-bot/

 

Iruzkinak

  1. […] Telegrameko bota nola sortu ikusi genuen. Gaurko honetan Twitter sare sozialean @etzipm erabiltzailearen txioak nola […]