写一个福利 Telegram 机器人

利用 Telegram 提供的 API 写一机器人,通过发送指令来执行一些任务。

img

官网

创建 bot

根据文档,在 telegram 里面添加 @BotFather, 然后跟他聊天来创建机器人

拿到 token

测试

在浏览器中(翻墙)输入 https://api.telegram.org/botYOU_TOKEN/getMe 测试:
返回如下格式,说明成功。

1
2
3
4
5
6
7
8
{
"ok": true,
"result": {
"id": 249208551,
"first_name": "LinuxC",
"username": "LinuxC_bot"
}
}

编写 api

我使用的 node 写的, 参考 telegram-node-bot

首先安装 telegram-node-bot

1
$ npm install --save telegram-node-bot

然后创建 app.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
'use strict'

var api = require('./api')

const Telegram = require('telegram-node-bot')
const TelegramBaseController = Telegram.TelegramBaseController
const tg = new Telegram.Telegram('YOU_TOKEN')

class PingController extends TelegramBaseController{
pingHandler($){
api.getMZ(function(data){
$.sendMessage(data)
})
}
get routes(){
return { 'ping':'pingHandler'}
}
}

tg.router
.when(['ping'],new PingController())

抓取图片的 api.js, 抓取图片可以参考前面的文章 Node.js 爬微信文章

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

'use strict'
var http = require('http')
var cheerio = require('cheerio')

var url = 'https://www.kmeitu.com/';

function getPicture(html){
var array = []
var $ = cheerio.load(html)
var items = $('.lz-img')
items.each(function (item) {
var url = $(this).attr('data-src').replace(/\s+/g, '')
array.push(url)
})
return array[Math.floor(Math.random()*array.length)]
}

exports.getMZ = function(callback){
http.get(url, function (res) {
var html = ''
res.on('data', function (data) {
html += data
})
res.on('end', function () {
//console.log(html)
var array = getPicture(html)
callback(array)
})
}).on('error', function (e) {
console.log('get html error')
})
}

然后运行 node app.js 即可
注意点: 全程需要 FQ(跟 telegram 连接用), app.js 方法服务器运行(我使用的 pm2 )。

文章来自: https://hanks.pub