# Message formatting in console class String def red; "\e[31m#{self}\e[0m" end def yellow; "\e[33m#{self}\e[0m" end def green; "\e[32m#{self}\e[0m" end def cyan; "\e[36m#{self}\e[0m" end def bold; "\e[1m#{self}\e[22m" end end # Requied packages / modules require('socket') require('logger') # Create logger if File.file?("log.txt") File.delete("log.txt") # Clear previous log end log = Logger.new("log.txt", formatter: proc {|severity, datetime, progname, msg| "#{datetime}: #{msg}\n"}) # Required Info load "credentials.txt" log.info("Loading \"credentials.txt\"") require_relative('CommandsHandler') # File for handling commands log.info("Loading \"CommandsHandler.rb\"") # Save "Preparing to connect" to "log.txt" log.info("Preparing to connect") # Variables socket = TCPSocket.new('irc.chat.twitch.tv', 6667) running = true # Authorization Login socket.puts("PASS #{OAUTH}") # Send the password(oauth) to Twitch socket.puts("NICK #{BOTNAME}") # Send the botname to Twitch socket.puts("JOIN ##{CHANNEL}") # Send the channel to Twitch # Save "Connected!" to "log.txt log.info("Joining #{CHANNEL.capitalize} as #{BOTNAME.capitalize} using OAUTH Token: #{OAUTH[6,OAUTH.length-16]}" + "*"*16) Thread.abort_on_exception = true # Loop (Background Thread) for recieving Twitch chat data Thread.start do socket.puts("PRIVMSG ##{CHANNEL} :Connected! PogChamp") # Send "Connected!" to the Twitch channel log.info("Connected to chat!") puts "#{BOTNAME} Joined ##{CHANNEL}" # Connection Status puts "You should be fully connected now" # Connection Status puts "" puts "Type \"clear\" to clear terminal" puts "Type \"project \" to write to project file" puts "Type \"disconnect\" to disconnect" puts "" while (running) do ready = IO.select([socket]) ready[0].each do |s| line = s.gets if line =~ /^/ response, log_msg = HandleCommands(line) end if response socket.puts(response) response = nil end if log_msg log.info(log_msg) log_msg = nil end end end end # Loop to keep bot going while (running) do input = gets.chomp if input == "clear" Clear() # Clear console elsif input == "disconnect" socket.puts("PRIVMSG ##{CHANNEL} : Disconnected BibleThump") socket.puts("PART ##{CHANNEL}\r\n") running = false exit end end