local component = require("component") local internet = require("internet") local sides = require("sides") local robot = require("robot") -- from: http://regex.info/code/JSON.lua JSON = (loadfile "JSON.lua")() local chat_id = "XXXXXXXXX" local token = "XXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" local method = "sendMessage" local url = "https://api.telegram.org/bot" .. token .. "/" .. method local row_width = 12 local slot = 2 local ic = component.inventory_controller local data_table = {} local running = true local function get_drawer_data(side) local slot_data = ic.getStackInSlot(side, slot) if slot_data then local item_data = {} item_data.name = slot_data.name item_data.label = slot_data.label item_data.size = slot_data.size data_table[slot_data.name] = item_data end end local function right() robot.turnRight(); robot.forward(); robot.turnLeft(); end local function left() robot.turnLeft(); robot.forward(); robot.turnRight(); end local function scan_row(direction, times, fn) local mf = nil if direction == sides.left then mf = left elseif direction == sides.right then mf = right end for i=0,times-1 do fn() mf() end end local function form_report() local outcome = "Report on " .. os.date() .. "@MLC (Minecraft Local Time)" for k,v in pairs(data_table) do outcome = outcome .. "\n" .. v.label .. " - " .. v.size end outcome = outcome .. "\n\nNext update in 1 hour" return outcome end local function send_data(data) local j_data = {} j_data.chat_id = chat_id j_data.text = data local r_headers = {} r_headers["Content-Type"] = "application/json" local raw_json_text = JSON:encode(j_data) local handle = internet.request(url, raw_json_text, r_headers, "POST") end local function main() local iterations = 0 while running do print("Iteraion", iterations) iterations = iterations + 1 scan_row(sides.right, row_width, function() get_drawer_data(sides.front) end) robot.up() scan_row(sides.left, row_width, function() get_drawer_data(sides.front) end) robot.up() scan_row(sides.right, row_width, function() get_drawer_data(sides.front) end) robot.up() scan_row(sides.left, row_width, function() get_drawer_data(sides.front) end) robot.down() robot.down() robot.down() local report = form_report() send_data(report) print("Sleeping for 1 hour...") os.sleep(60 * 60) data_table = {} end end main()