From 3090f95a1196c15244a1a441922495b3891cf804 Mon Sep 17 00:00:00 2001 From: Techokami Date: Tue, 29 Apr 2014 14:57:33 -0400 Subject: [PATCH 1/2] Further improved irc.lua Proper displaying of /me commands, and audio notification if your name is said in chat (using the computer.beep() command) --- .../assets/opencomputers/loot/OpenIRC/irc.lua | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/main/resources/assets/opencomputers/loot/OpenIRC/irc.lua b/src/main/resources/assets/opencomputers/loot/OpenIRC/irc.lua index 44705434b..8afe42646 100644 --- a/src/main/resources/assets/opencomputers/loot/OpenIRC/irc.lua +++ b/src/main/resources/assets/opencomputers/loot/OpenIRC/irc.lua @@ -2,6 +2,7 @@ -- http://tools.ietf.org/html/rfc2812 local component = require("component") +local computer = require("computer") if not component.isAvailable("internet") then io.stderr:write("OpenIRC requires an Internet Card to run!\n") @@ -164,16 +165,23 @@ local function handleCommand(prefix, command, args, message) print("[" .. args[1] .. "] " .. name(prefix) .. " kicked " .. args[2]) elseif command == "PRIVMSG" then if string.find(message, "\001TIME\001") then - sock:write("NOTICE " .. name(prefix) .. " :\001TIME " .. os.date() .. "\001\r\n") - sock:flush() - elseif string.find(message, "\001VERSION\001") then - sock:write("NOTICE " .. name(prefix) .. " :\001VERSION Minecraft/OpenComputers Lua 5.2\001\r\n") - sock:flush() - elseif string.find(message, "\001PING") then - sock:write("NOTICE " .. name(prefix) .. " :" .. message .. "\001\r\n") - sock:flush() - end - print("[" .. args[1] .. "] " .. name(prefix) .. ": " .. message) + sock:write("NOTICE " .. name(prefix) .. " :\001TIME " .. os.date() .. "\001\r\n") + sock:flush() + elseif string.find(message, "\001VERSION\001") then + sock:write("NOTICE " .. name(prefix) .. " :\001VERSION Minecraft/OpenComputers Lua 5.2\001\r\n") + sock:flush() + elseif string.find(message, "\001PING") then + sock:write("NOTICE " .. name(prefix) .. " :" .. message .. "\001\r\n") + sock:flush() + end + if string.find(message, nick) then + computer.beep() + end + if string.find(message, "\001ACTION") then + print("[" .. args[1] .. "] " .. name(prefix) .. string.gsub(string.gsub(message, "\001ACTION", ""), "\001", "")) + else + print("[" .. args[1] .. "] " .. name(prefix) .. ": " .. message) + end elseif command == "NOTICE" then print("[NOTICE] " .. message) elseif command == "ERROR" then @@ -368,7 +376,11 @@ local result, reason = pcall(function() local line = term.read(history) if sock and line and line ~= "" then line = text.trim(line) - print("[" .. (target or "?") .. "] me: " .. line, true) + if line:lower():sub(1,4) == "/me " then + print("[" .. (target or "?") .. "] You " .. string.gsub(line, "/me ", ""), true) + else + print("[" .. (target or "?") .. "] me: " .. line, true) + end if line:lower():sub(1, 5) == "/msg " then local user, message = line:sub(6):match("^(%S+) (.+)$") if message then @@ -445,4 +457,4 @@ end if not result then error(reason, 0) end -return reason +return reason \ No newline at end of file From 1e3e0db7ce2dd658a9a4fb2b81f7dab0a3fecc03 Mon Sep 17 00:00:00 2001 From: Techokami Date: Tue, 29 Apr 2014 15:08:17 -0400 Subject: [PATCH 2/2] More irc.lua cleanup OC doesn't like to render tabs! Use spaces instead :) --- .../resources/assets/opencomputers/loot/OpenIRC/irc.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/assets/opencomputers/loot/OpenIRC/irc.lua b/src/main/resources/assets/opencomputers/loot/OpenIRC/irc.lua index 8afe42646..d9f5cd151 100644 --- a/src/main/resources/assets/opencomputers/loot/OpenIRC/irc.lua +++ b/src/main/resources/assets/opencomputers/loot/OpenIRC/irc.lua @@ -242,7 +242,7 @@ local function handleCommand(prefix, command, args, message) if info.realName then print("Real name: " .. info.realName) end if info.host then print("Host: " .. info.host) end if info.server then print("Server: " .. info.server .. (info.serverInfo and (" (" .. info.serverInfo .. ")") or "")) end - if info.secureconn then print(info.secureconn) end + if info.secureconn then print(info.secureconn) end if info.channels then print("Channels: " .. info.channels) end if info.idle then print("Idle for: " .. info.idle) end whois[nick] = nil @@ -274,7 +274,7 @@ local function handleCommand(prefix, command, args, message) elseif command == commands.RPL_HELPSTART or command == commands.RPL_HELPTXT or command == commands.RPL_ENDOFHELP then - print(message) + print(message) elseif command == commands.ERR_BANLISTFULL or command == commands.ERR_BANNEDFROMCHAN or command == commands.ERR_CANNOTSENDTOCHAN or @@ -290,7 +290,7 @@ local function handleCommand(prefix, command, args, message) command == commands.ERR_USERNOTINCHANNEL or command == commands.ERR_WASNOSUCHNICK or command == commands.ERR_MODELOCK then - print("[ERROR]: " .. message) + print("[ERROR]: " .. message) elseif tonumber(command) and (tonumber(command) >= 200 and tonumber(command) < 400) then print("[Response " .. command .. "] " .. table.concat(args, ", ") .. ": " .. message)