commit
a2dd11bc1c
37
bot/bot.lua
37
bot/bot.lua
@ -5,8 +5,6 @@
|
|||||||
|
|
||||||
VERSION = 'v0.6'
|
VERSION = 'v0.6'
|
||||||
|
|
||||||
plugins = {}
|
|
||||||
|
|
||||||
-- taken from http://stackoverflow.com/a/11130774/3163199
|
-- taken from http://stackoverflow.com/a/11130774/3163199
|
||||||
function scandir(directory)
|
function scandir(directory)
|
||||||
local i, t, popen = 0, {}, io.popen
|
local i, t, popen = 0, {}, io.popen
|
||||||
@ -17,15 +15,6 @@
|
|||||||
return t
|
return t
|
||||||
end
|
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)
|
function on_msg_receive (msg)
|
||||||
if msg_valid(msg) == false then
|
if msg_valid(msg) == false then
|
||||||
return
|
return
|
||||||
@ -336,11 +325,6 @@
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Start and load values
|
|
||||||
config = load_config()
|
|
||||||
our_id = 0
|
|
||||||
now = os.time()
|
|
||||||
|
|
||||||
function get_receiver(msg)
|
function get_receiver(msg)
|
||||||
if msg.to.type == 'user' then
|
if msg.to.type == 'user' then
|
||||||
return 'user#id'..msg.from.id
|
return 'user#id'..msg.from.id
|
||||||
@ -350,7 +334,6 @@
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function on_our_id (id)
|
function on_our_id (id)
|
||||||
our_id = id
|
our_id = id
|
||||||
end
|
end
|
||||||
@ -373,3 +356,23 @@
|
|||||||
function on_binlog_replay_end ()
|
function on_binlog_replay_end ()
|
||||||
started = 1
|
started = 1
|
||||||
end
|
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",
|
"log_file": "/var/www/html/log.txt",
|
||||||
"sh_enabled": false,
|
"sh_enabled": false,
|
||||||
"sudo_users": [ 0, 1 ],
|
"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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Reference in New Issue
Block a user