Merge branch 'master' of github.com:yagop/telegram-bot
This commit is contained in:
commit
f0058d81ce
39
bot/bot.lua
39
bot/bot.lua
@ -4,8 +4,6 @@
|
||||
-- lrexlib = require("rex_pcre")
|
||||
|
||||
VERSION = 'v0.6'
|
||||
|
||||
plugins = {}
|
||||
|
||||
-- taken from http://stackoverflow.com/a/11130774/3163199
|
||||
function scandir(directory)
|
||||
@ -16,16 +14,7 @@
|
||||
end
|
||||
return t
|
||||
end
|
||||
|
||||
-- load all plugins in the plugins/ directory
|
||||
for k, v in pairs(scandir("plugins")) do
|
||||
if not (v:sub(0, 1) == ".") then
|
||||
print("Loading plugin", v)
|
||||
t = loadfile("plugins/" .. v)()
|
||||
table.insert(plugins, t)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function on_msg_receive (msg)
|
||||
if msg_valid(msg) == false then
|
||||
return
|
||||
@ -273,11 +262,6 @@
|
||||
end
|
||||
end
|
||||
|
||||
-- Start and load values
|
||||
config = load_config()
|
||||
our_id = 0
|
||||
now = os.time()
|
||||
|
||||
function get_receiver(msg)
|
||||
if msg.to.type == 'user' then
|
||||
return 'user#id'..msg.from.id
|
||||
@ -287,7 +271,6 @@
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function on_our_id (id)
|
||||
our_id = id
|
||||
end
|
||||
@ -310,3 +293,23 @@
|
||||
function on_binlog_replay_end ()
|
||||
started = 1
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- Start and load values
|
||||
config = load_config()
|
||||
our_id = 0
|
||||
now = os.time()
|
||||
|
||||
-- load plugins
|
||||
plugins = {}
|
||||
|
||||
-- load all plugins in the plugins/ directory
|
||||
for k, v in pairs(scandir("plugins")) do
|
||||
if not (v:sub(0, 1) == ".") then
|
||||
print("Loading plugin", v)
|
||||
t = loadfile("plugins/" .. v)()
|
||||
table.insert(plugins, t)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -2,5 +2,11 @@
|
||||
"log_file": "/var/www/html/log.txt",
|
||||
"sh_enabled": false,
|
||||
"sudo_users": [ 0, 1 ],
|
||||
"values": { }
|
||||
}
|
||||
"values": { },
|
||||
"twitter": {
|
||||
"consumer_key" : "",
|
||||
"consumer_secret" : "",
|
||||
"access_token" : "",
|
||||
"access_token_secret" : ""
|
||||
}
|
||||
}
|
||||
|
70
plugins/twitter.lua
Normal file
70
plugins/twitter.lua
Normal file
@ -0,0 +1,70 @@
|
||||
local OAuth = require "OAuth"
|
||||
|
||||
local consumer_key = config.twitter.consumer_key
|
||||
local consumer_secret = config.twitter.consumer_secret
|
||||
local access_token = config.twitter.access_token
|
||||
local access_token_secret = config.twitter.access_token_secret
|
||||
|
||||
local client = OAuth.new(consumer_key, consumer_secret, {
|
||||
RequestToken = "https://api.twitter.com/oauth/request_token",
|
||||
AuthorizeUser = {"https://api.twitter.com/oauth/authorize", method = "GET"},
|
||||
AccessToken = "https://api.twitter.com/oauth/access_token"
|
||||
}, {
|
||||
OAuthToken = access_token,
|
||||
OAuthTokenSecret = access_token_secret
|
||||
})
|
||||
|
||||
function run(msg, matches)
|
||||
|
||||
local twitter_url = "https://api.twitter.com/1.1/statuses/show/" .. matches[1] .. ".json"
|
||||
|
||||
print(twitter_url)
|
||||
|
||||
local response_code, response_headers, response_status_line, response_body = client:PerformRequest("GET", twitter_url)
|
||||
print(response_body)
|
||||
local response = json:decode(response_body)
|
||||
|
||||
print("response = ", response)
|
||||
|
||||
local header = "Tweet from " .. response.user.name .. " (@" .. response.user.screen_name .. ")\n"
|
||||
local text = response.text
|
||||
|
||||
-- replace short URLs
|
||||
if response.entities.url then
|
||||
for k, v in pairs(response.entities.urls) do
|
||||
local short = v.url
|
||||
local long = v.expanded_url
|
||||
text = text:gsub(short, long)
|
||||
end
|
||||
end
|
||||
|
||||
-- remove images
|
||||
local images = {}
|
||||
if response.entities.media then
|
||||
for k, v in pairs(response.entities.media) do
|
||||
local url = v.url
|
||||
local pic = v.media_url
|
||||
text = text:gsub(url, "")
|
||||
table.insert(images, pic)
|
||||
end
|
||||
end
|
||||
|
||||
-- send the parts
|
||||
local receiver = get_receiver(msg)
|
||||
send_msg(receiver, header .. "\n" .. text, ok_cb, false)
|
||||
for k, v in pairs(images) do
|
||||
local file = download_to_file(v)
|
||||
send_photo(receiver, file, ok_cb, false)
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
return {
|
||||
description = "Shows a tweet",
|
||||
usage = "",
|
||||
patterns = {"https://twitter.com/[^/]+/status/([0-9]+)"},
|
||||
run = run
|
||||
}
|
||||
|
||||
|
34
plugins/twitter_send.lua
Normal file
34
plugins/twitter_send.lua
Normal file
@ -0,0 +1,34 @@
|
||||
local OAuth = require "OAuth"
|
||||
|
||||
local consumer_key = config.twitter.consumer_key
|
||||
local consumer_secret = config.twitter.consumer_secret
|
||||
local access_token = config.twitter.access_token
|
||||
local access_token_secret = config.twitter.access_token_secret
|
||||
|
||||
local client = OAuth.new(consumer_key, consumer_secret, {
|
||||
RequestToken = "https://api.twitter.com/oauth/request_token",
|
||||
AuthorizeUser = {"https://api.twitter.com/oauth/authorize", method = "GET"},
|
||||
AccessToken = "https://api.twitter.com/oauth/access_token"
|
||||
}, {
|
||||
OAuthToken = access_token,
|
||||
OAuthTokenSecret = access_token_secret
|
||||
})
|
||||
|
||||
function run(msg, matches)
|
||||
|
||||
local response_code, response_headers, response_status_line, response_body =
|
||||
client:PerformRequest("POST", "https://api.twitter.com/1.1/statuses/update.json", {
|
||||
status = matches[1]
|
||||
})
|
||||
if response_code ~= 200 then
|
||||
return "Error: "..response_code
|
||||
end
|
||||
return "Tweet enviado"
|
||||
end
|
||||
|
||||
return {
|
||||
description = "Sends a tweet",
|
||||
usage = "!tw [text]",
|
||||
patterns = {"!tw (.+)"},
|
||||
run = run
|
||||
}
|
Reference in New Issue
Block a user