diff --git a/src/irc.clj b/src/irc.clj new file mode 100644 index 0000000..5275ab2 --- /dev/null +++ b/src/irc.clj @@ -0,0 +1,23 @@ +;; SPDX-License-Identifier: Apache-2.0 +;; SPDX-FileCopyrightText: 2022 Sebastian Crane + +(ns irc + (:require [bot :refer :all] + [irclj.core])) + +(defn irc-callback [state config connection type & m] + (let [{:keys [channel]} (:irc config) + {:keys [nick text target]} type] + (irclj.core/message connection channel + (when (= target channel) + (dispatch-command state nick text))))) + +(defn new-irc-connection [state config] + (let [{:keys [server port name nick channel]} (:irc config)] + (try + (irclj.core/connect server + port + nick + :real-name name + :callbacks {:privmsg (partial irc-callback state config)}) + (catch Exception e nil))))