This repository has been archived on 2021-04-24. You can view files and clone it, but cannot push or open issues or pull requests.
Mikubot-2/miku/plugins/shell.lua

115 lines
4.1 KiB
Lua

local shell = {}
function shell:init(config)
shell.triggers = {
"^/[Cc][Mm][Dd] (.+)$",
"^/[Uu][Pp][Tt][Ii][Mm][Ee]$",
"^/[Ss][Cc][Rr][Ee][Ee][Nn]$",
"^/[Cc][Hh][Ee][Cc][Kk]$",
"^/[Ww][Ee][Bb][Cc][Aa][Mm]$",
"^/[Tt][Rr][Aa][Ff][Ff][Ii][Cc]$"
}
end
function shell:transeng(ger)
--Days
local ger = string.gsub(ger, "Monday", "Montag")
local ger = string.gsub(ger, "Tuesday", "Dienstag")
local ger = string.gsub(ger, "Wednesday", "Mittwoch")
local ger = string.gsub(ger, "Thursday", "Donnerstag")
local ger = string.gsub(ger, "Friday", "Freitag")
local ger = string.gsub(ger, "Saturday", "Samstag")
local ger = string.gsub(ger, "Sunday", "Sonntag")
--Weeks
local ger = string.gsub(ger, 'week,', 'Woche,')
local ger = string.gsub(ger, 'weeks,', 'Wochen,')
local ger = string.gsub(ger, 'day,', 'Tag,')
local ger = string.gsub(ger, 'days,', 'Tage,')
local ger = string.gsub(ger, 'hour,', 'Stunde und')
local ger = string.gsub(ger, 'hours,', 'Stunden und')
local ger = string.gsub(ger, 'minute$', 'Minute.')
local ger = string.gsub(ger, 'minutes', 'Minuten.')
--Months
local ger = string.gsub(ger, "January", "Januar")
local ger = string.gsub(ger, "February", "Februar")
local ger = string.gsub(ger, "March", "März")
local ger = string.gsub(ger, "April", "April")
local ger = string.gsub(ger, "May", "Mai")
local ger = string.gsub(ger, "June", "Juni")
local ger = string.gsub(ger, "July", "Juli")
local ger = string.gsub(ger, "August", "August")
local ger = string.gsub(ger, "September", "September")
local ger = string.gsub(ger, "October", "Oktober")
local ger = string.gsub(ger, "November", "November")
local ger = string.gsub(ger, "December", "Dezember")
return ger
end
local makeOurDate = function(dateString)
local pattern = "(%d+)%-(%d+)%-(%d+)"
local year, month, day = dateString:match(pattern)
return day..'.'..month..'.'..year
end
function shell:action(msg, config, matches)
if not is_sudo(msg, config) then
utilities.send_reply(msg, config.errors.sudo, true)
return
end
local input = matches[1]
local taken_time = os.date("%A, %d. %B %Y um %H:%M:%S Uhr")
if msg.text:match('^/[Uu][Pp][Tt][Ii][Mm][Ee]$') then
local cmd = run_command('uptime -s && uptime -p')
local text1 = 'Der PC ist seit dem <b>'..makeOurDate(string.match(cmd, '(%d+-%d+-%d+)'))..'</b> an.'
local text2 = shell:transeng('Das sind <b>'..string.match(cmd, 'up (.*)')..'</b>')
utilities.send_reply(msg, text1..'\n'..text2, 'HTML')
return
end
-- Requires scrot (sudo apt-get install scrot)
if msg.text:match('^/[Ss][Cc][Rr][Ee][Ee][Nn]$') then
run_command("scrot '/tmp/scrot.png'")
local text = '#Screenshot vom '..shell:transeng(taken_time)
utilities.send_photo(msg.chat.id, '/tmp/scrot.png', text, msg.message_id)
return
end
-- Requires fswebcam (sudo apt-get install fswebcam)
if msg.text:match('^/[Ww][Ee][Bb][Cc][Aa][Mm]$') then
run_command("fswebcam -r 1280x1024 --png 9 -D 1 /tmp/webcam.png")
local text = '#Webcam vom '..shell:transeng(taken_time)
utilities.send_photo(msg.chat.id, '/tmp/webcam.png', text, msg.message_id)
return
end
if msg.text:match('^/[Cc][Hh][Ee][Cc][Kk]$') then
local cmd = run_command("apt --just-print upgrade")
local text = 'Es gibt <b>'..string.match(cmd, '(%d+) aktualisiert')..'</b> Updates.'
utilities.send_reply(msg, text, 'HTML')
return
end
-- Requires vnstat & vnstati (sudo apt-get install vnstat vnstati)
if msg.text:match('^/[Tt][Rr][Aa][Ff][Ff][Ii][Cc]$') then
local network = 'wlan0' -- You can see your network with "ifconfig" in an terminal
run_command("vnstati -m -vs -i "..network.." -o /tmp/vnstat.png")
utilities.send_photo(msg.chat.id, '/tmp/vnstat.png', nil, msg.message_id)
return
end
input = input:gsub('', '--')
local output = run_command(input)
if output:len() == 0 then
output = 'Ausgeführt.'
else
output = '<pre>\n' .. output .. '\n</pre>'
end
output = output:gsub('<pre>%\n', '<pre>')
output = output:gsub('%\n%\n</pre>', '</pre>')
utilities.send_message(msg.chat.id, output, true, msg.message_id, 'HTML')
end
return shell