Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- CONFIGURATION:
- NAME = 'IRC'
- SERVER = 'irc.esper.net:6667'
- CHANNEL = '#ripirc'
- nick = 'Rippez'
- local thread = require('thread')
- local internet = require('internet')
- local component = require('component')
- local event = require('event')
- local chatbox = component.chat_box
- chatbox.setName(NAME)
- function sendIRCMessageRaw(message)
- socket:write(message .. '\r\n')
- socket:flush()
- end
- local function login()
- if socket then socket:close() end
- socket = internet.open(SERVER)
- socket:setTimeout(0.05)
- sendIRCMessageRaw('USER ' .. nick .. ' 0 * :' .. nick)
- sendIRCMessageRaw('NICK ' .. nick)
- end
- local t = thread.create(function()
- while true do
- local id, _, nick, msg = event.pull('chat_message')
- if id == 'chat_message' then
- print('Chat message: ', nick, msg)
- sendIRCMessageRaw('PRIVMSG ' .. CHANNEL..' :' .. string.format('[%s] %s', nick, msg))
- end
- end
- end)
- login()
- while true do
- os.sleep(0)
- if not socket then login() end
- repeat
- local ok, line = pcall(socket.read, socket)
- if ok then
- if not line then login() end
- print(line)
- local match, prefix = line:match('^(:(%S+) )')
- if prefix then prefix = prefix:match('^[^!]+') end
- if match then line = line:sub(#match + 1) end
- local match, command = line:match('^(([^:]%S*))')
- if match then line = line:sub(#match + 1) end
- repeat
- local match = line:match('^( ([^:]%S*))')
- if match then
- line = line:sub(#match + 1)
- end
- until not match
- local message = line:match('^ :(.*)$')
- if command == '001' or command == '404' then
- sendIRCMessageRaw('JOIN ' .. CHANNEL)
- elseif command == '433' or command == '436' then
- nick = nick .. string.char(math.random(97,122))
- sendIRCMessageRaw('NICK ' .. nick)
- elseif command == 'PING' then
- sendIRCMessageRaw('PONG :' .. message)
- elseif command == 'PRIVMSG' then
- chatbox.say(prefix .. ": " .. message)
- end
- end
- until not ok
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement