diff options
Diffstat (limited to 'lib/irc/connection.ex')
-rw-r--r-- | lib/irc/connection.ex | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/lib/irc/connection.ex b/lib/irc/connection.ex index eff5930..a0cdc27 100644 --- a/lib/irc/connection.ex +++ b/lib/irc/connection.ex @@ -113,7 +113,6 @@ defmodule IRC.Connection do spec = [{{:_, :"$1", :_, :_, :_, :_, :_, :_, :_, :_, :_}, [{:==, :"$1", {:const, network}}], [:"$_"]}] results = Enum.map(:dets.select(dets(), spec), fn(object) -> from_tuple(object) end) - |> IO.inspect() if channel do Enum.find(results, fn(conn) -> Enum.member?(conn.channels, channel) end) else @@ -277,14 +276,17 @@ defmodule IRC.Connection do # Received something in a channel def handle_info({:received, text, sender, chan}, state) do - reply_fun = fn(text) -> irc_reply(state, {chan, sender}, text) end - account = IRC.Account.lookup(sender) - message = %IRC.Message{at: NaiveDateTime.utc_now(), text: text, network: network(state), account: account, sender: sender, channel: chan, replyfun: reply_fun, trigger: extract_trigger(text)} - message = case IRC.UserTrack.messaged(message) do - :ok -> message - {:ok, message} -> message + user = IRC.UserTrack.find_by_nick(network(state), sender.nick) + if !Map.get(user.options, :puppet) do + reply_fun = fn(text) -> irc_reply(state, {chan, sender}, text) end + account = IRC.Account.lookup(sender) + message = %IRC.Message{at: NaiveDateTime.utc_now(), text: text, network: network(state), account: account, sender: sender, channel: chan, replyfun: reply_fun, trigger: extract_trigger(text)} + message = case IRC.UserTrack.messaged(message) do + :ok -> message + {:ok, message} -> message + end + publish(message, ["#{message.network}/#{chan}:messages"]) end - publish(message, ["#{message.network}/#{chan}:messages"]) {:noreply, state} end @@ -443,13 +445,9 @@ defmodule IRC.Connection do |> List.flatten() outputs = for line <- lines do ExIRC.Client.msg(client, :privmsg, target, line) - {:irc, :out, %IRC.Message{network: network, channel: target, text: line, sender: %ExIRC.SenderInfo{nick: state.conn.nick}, at: NaiveDateTime.utc_now()}} + {:irc, :out, %IRC.Message{network: network, channel: target, text: line, sender: %ExIRC.SenderInfo{nick: state.conn.nick}, at: NaiveDateTime.utc_now(), meta: %{self: true}}} end for f <- outputs, do: dispatch(["irc:outputs", "#{network}/#{target}:outputs"], f) - case :global.whereis_name({LSG.TelegramRoom, network, target}) do - pid when is_pid(pid) -> send(pid, {:raw, text}) - _ -> :ok - end end defp irc_reply(%{client: client}, {target, %{nick: nick}}, {:kick, reason}) do |