# Type Enter and nothing else to refresh the messages.
# Type messages and send them, hopefully everyone hears you just fine.
#
-# Commands (which always begin with a forward slash):
+# Commands (which always begin with a forward slash, case doesn't matter):
#
# Commands must be near the beginning of messages, and will preform their respective action.
#
# BYE, QUIT - exits
# SAY - says something verbatim
+# RAW - send a raw message (no prefix)
# CLEAR - clears the terminal
# NICK... - sets the nick
# RECONNECT - reconnects
# DELAY... - sets delays
+#
+# /nick anon9999
require 'socket'
require 'readline'
end
end
+def raw(socket, msg)
+ socket.puts(msg)
+end
+
def post(socket, msg)
update_prefix
- socket.puts(@prefix + msg)
+ raw(socket, @prefix + msg)
end
def update_prefix
- date = Time.now.utc.strftime("%Y/%m/%d %k:%M:%S")
+ date = Time.now.utc.strftime("%Y/%m/%d %k:%M")
@prefix = "<#{date} #{@name}> "
end
delay = 0
h = { "BYE" => 1, "QUIT" => 1, "SAY" => 2, "CLEAR" => 3, "NAME" => 4, "NICK" => 4,
- "RC" => 5, "RECONNECT" => 5, "DELAY" => 6 }
+ "RC" => 5, "RECONNECT" => 5, "DELAY" => 6, "RAW" => 7 }
update_prefix
while msg = Readline.readline(@prefix, true)
if not msg.empty?
msg.strip!
- word = msg.split(/^\/([\w]*)$|^([\w]*) (.*)$/)[1..]
- case h[word[0]]
- when h["BYE"]
- post(socket, "BYE")
- exit 0
- when h["CLEAR"]
- puts "\e[1;1H\e[2J"
- when h["NICK"]
- if not word[1].empty?
- @name = word[1]
- end
- when h["RC"]
- puts "reconnecting..."
- socket.close
- socket = connect
- when h["DELAY"]
- delay = word[1].to_i
- when h["SAY"]
- if not word.length > 1
- word.push("")
+ word = msg.split(/^\/([\w]*)\W+?(.*)?$/)[1..]
+ if not word.empty?
+ case h[word[0].upcase]
+ when h["BYE"]
+ post(socket, "BYE")
+ exit 0
+ when h["CLEAR"]
+ puts "\e[1;1H\e[2J"
+ when h["NICK"]
+ if not word[1].empty?
+ @name = word[1]
+ end
+ when h["RC"]
+ puts "reconnecting..."
+ socket.close
+ socket = connect
+ when h["DELAY"]
+ delay = word[1].to_i
+ when h["SAY"]
+ if not word.length > 1
+ word.push("")
+ end
+ post(socket, word[1])
+ when h["RAW"]
+ begin
+ raw(socket, (msg.match(/\/?raw (.*)/i)[1]))
+ puts "raw message sent"
+ rescue
+ puts "didn't send that"
+ end
+ else
+ post(socket, msg)
end
- post(socket, word[1])
else
- post(socket, msg)
+ post(socket, msg)
end
end