]> git.xolatile.top Git - public-moontalk.git/commitdiff
update ruby client
authorEmil Williams <emilwilliams@tuta.io>
Sat, 17 Feb 2024 18:55:24 +0000 (18:55 +0000)
committerEmil Williams <emilwilliams@tuta.io>
Sat, 17 Feb 2024 18:55:24 +0000 (18:55 +0000)
client/moontalk.rb

index 242792c569ae1affa2e9da7129c85c79b8694aaf..102d7e8b6d12309aabfb7ef9886f22e2f4f04114 100755 (executable)
 # 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'
@@ -40,13 +43,17 @@ def read_from(socket)
   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
 
@@ -82,36 +89,47 @@ def main
       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