Merge branch 'master' of github.com:yagop/telegram-bot
This commit is contained in:
commit
0d8de480db
25
README.md
25
README.md
@ -1,20 +1,27 @@
|
||||
telegram-bot
|
||||
============
|
||||
|
||||
Bot for telegram with [tg](https://github.com/vysheng/tg).
|
||||
A telegram bot using https://github.com/vysheng/tg.
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
* Requirements
|
||||
```bash
|
||||
sudo apt-get install lua-socket libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev fortune curl
|
||||
git submodule update --init --recursive
|
||||
cd tg
|
||||
./configure
|
||||
make
|
||||
../launch.sh
|
||||
# Tested on Ubuntu 14.04, for other OSs check out https://github.com/vysheng/tg#installation
|
||||
$ sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev fortune curl luarocks
|
||||
```
|
||||
|
||||
* Clone the repo & compile the telegram library
|
||||
```bash
|
||||
$ git clone https://github.com/yagop/telegram-bot --recursive && cd telegram-bot/tg
|
||||
$ ./configure && make
|
||||
$ cd .. && ./launch.sh # Will ask you for a telegram enabled number phone & confirmation code.
|
||||
```
|
||||
|
||||
Command list
|
||||
```
|
||||
!help : print this help
|
||||
!help : print command list
|
||||
!ping : bot sends pong
|
||||
!sh (text) : send commands to bash (only privileged users)
|
||||
!echo (text) : echo the msg
|
||||
@ -25,6 +32,8 @@ Command list
|
||||
!fortune : print a random adage
|
||||
!weather [city] : weather in that city (Madrid if not city)
|
||||
!9gag : send random image from 9gag
|
||||
!rae (word): Spanish dictionary
|
||||
!eur : EURUSD market value
|
||||
!img (text) : search image with Google API and sends it
|
||||
!uc3m : fortunes from Universidad Carlos III
|
||||
```
|
||||
|
47
bot/bot.lua
47
bot/bot.lua
@ -2,7 +2,7 @@ http = require("socket.http")
|
||||
URL = require("socket.url")
|
||||
json = (loadfile "./bot/JSON.lua")()
|
||||
|
||||
VERSION = 'v0.4'
|
||||
VERSION = 'v0.5'
|
||||
|
||||
|
||||
function on_msg_receive (msg)
|
||||
@ -16,6 +16,8 @@ function on_msg_receive (msg)
|
||||
else
|
||||
if is_image_url(msg.text) then
|
||||
send_image_from_url (msg)
|
||||
elseif is_youtube_url(msg.text) then
|
||||
send_youtube_thumbnail(msg.text)
|
||||
else
|
||||
if is_file_url(msg.text) then
|
||||
send_file_from_url(msg)
|
||||
@ -60,13 +62,27 @@ end
|
||||
|
||||
function is_image_url(text)
|
||||
last = string.get_last_word(text)
|
||||
extension = string.get_extension_from_filename(last)
|
||||
if extension == 'jpg' or extension == 'png' then
|
||||
extension = string.get_extension_from_filename(last) -- TODO: Change it please
|
||||
if extension == 'jpg' or extension == 'png' or extension == 'jpeg' then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function is_youtube_url(text)
|
||||
-- http://stackoverflow.com/questions/19377262/regex-for-youtube-url
|
||||
not_full_yt_url = string.match(text, "youtube.com/watch%?v=([A-Za-z0-9-]*)") == nil
|
||||
not_short_yt_url = string.match(text, "youtu.be/([A-Za-z0-9-]*)") == nil
|
||||
yt = full_yt_url or short_yt_url
|
||||
return yt
|
||||
end
|
||||
|
||||
function send_youtube_thumbnail(msg)
|
||||
yt_thumbnail = "http://img.youtube.com/vi/".. string.match(msg.text, "([A-Za-z0-9-]*)").."/hqdefault.jpg"
|
||||
file = download_to_file(yt_thumbnail)
|
||||
send_photo(get_receiver(msg), file, ok_cb, false)
|
||||
end
|
||||
|
||||
function is_file_url(text)
|
||||
last = string.get_last_word(text)
|
||||
extension = string.get_extension_from_filename(last)
|
||||
@ -162,6 +178,12 @@ function do_action(msg)
|
||||
return
|
||||
end
|
||||
|
||||
if string.starts(msg.text, '!eur') then
|
||||
local eur = getEURUSD( )
|
||||
send_msg(receiver, eur, ok_cb, false)
|
||||
return
|
||||
end
|
||||
|
||||
if string.starts(msg.text, '!version') then
|
||||
text = 'James Bot '.. VERSION .. [[
|
||||
Licencia GNU v2, código disponible en http://git.io/6jdjGg
|
||||
@ -184,6 +206,8 @@ Puedes hacer una donación a la ONG que decidas y ayudar a otras personas.]]
|
||||
!fortune : print a random adage
|
||||
!weather [city] : weather in that city (Madrid if not city)
|
||||
!9gag : send random url image from 9gag
|
||||
!rae (word): Spanish dictionary
|
||||
!eur : EURUSD market value
|
||||
!img (text) : search image with Google API and sends it
|
||||
!uc3m : fortunes from Universidad Carlos III]]
|
||||
send_msg(receiver, text, ok_cb, false)
|
||||
@ -338,6 +362,16 @@ function get_9GAG()
|
||||
return link_image, title
|
||||
end
|
||||
|
||||
function getEURUSD( )
|
||||
b = http.request("http://webrates.truefx.com/rates/connect.html?c=EUR/USD&f=csv&s=n")
|
||||
local rates = b:split(", ")
|
||||
local symbol = rates[1]
|
||||
local timestamp = rates[2]
|
||||
local sell = rates[3]..rates[4]
|
||||
local buy = rates[5]..rates[6]
|
||||
return symbol..'\n'..'Buy: '..buy..'\n'..'Sell: '..sell
|
||||
end
|
||||
|
||||
|
||||
function download_to_file( url )
|
||||
print("url a descargar: "..url)
|
||||
@ -415,6 +449,13 @@ function split_by_space ( text )
|
||||
return words
|
||||
end
|
||||
|
||||
function string:split(sep)
|
||||
local sep, fields = sep or ":", {}
|
||||
local pattern = string.format("([^%s]+)", sep)
|
||||
self:gsub(pattern, function(c) fields[#fields+1] = c end)
|
||||
return fields
|
||||
end
|
||||
|
||||
function vardump(value, depth, key)
|
||||
local linePrefix = ""
|
||||
local spaces = ""
|
||||
|
2
tg
2
tg
@ -1 +1 @@
|
||||
Subproject commit 7a9764f24ac745eb03a72e2ddb69c8574f6a8c2f
|
||||
Subproject commit 54f6743db74461e6a3394f577671a273a37e01a1
|
Reference in New Issue
Block a user