defmodule IRC.ConnectionHandler do defmodule State do defstruct [:host, :port, :pass, :nick, :name, :user, :client] end def start_link(client) do irc = Application.get_env(:lsg, :irc)[:irc] host = irc[:host] port = irc[:port] nick = irc[:nick] user = irc[:user] name = irc[:name] GenServer.start_link(__MODULE__, [%State{client: client, host: host, port: port, nick: nick, user: user, name: name}]) end def init([state]) do ExIRC.Client.add_handler state.client, self ExIRC.Client.connect! state.client, state.host, state.port {:ok, state} end def handle_info({:connected, server, port}, state) do debug "Connected to #{server}:#{port}" ExIRC.Client.logon state.client, state.pass, state.nick, state.user, state.name {:noreply, state} end # Catch-all for messages you don't care about def handle_info(msg, state) do {:noreply, state} end defp debug(msg) do IO.puts IO.ANSI.yellow() <> msg <> IO.ANSI.reset() end end