AtlatestRepositorysigil-irc
1
;;; Test IRC connection to libera.chat2
;;;3
;;; Usage:4
;;; ./run-sigil eval -f packages/sigil-irc/test/test-libera.sgl5
;;;6
;;; Set environment variables for authentication:7
;;; IRC_NICK - Your IRC nickname8
;;; IRC_SASL_USER - SASL username (optional)9
;;; IRC_SASL_PASS - SASL password (optional)11
(import (sigil irc)12
(sigil io))14
(define nick (or (getenv "IRC_NICK") "sigil-test"))15
(define sasl-user (getenv "IRC_SASL_USER"))16
(define sasl-pass (getenv "IRC_SASL_PASS"))18
(display "Connecting to irc.libera.chat:6697 as ")19
(display nick)20
(newline)22
(when sasl-user23
(display "Using SASL authentication for: ")24
(display sasl-user)25
(newline))27
(define conn28
(if (and sasl-user sasl-pass)29
(make-irc-connection30
server: "irc.libera.chat"31
port: 669732
nick: nick33
tls: #t34
sasl-username: sasl-user35
sasl-password: sasl-pass)36
(make-irc-connection37
server: "irc.libera.chat"38
port: 669739
nick: nick40
tls: #t)))42
;; Log all raw messages43
(irc-on-message conn44
(lambda (msg)45
(display "[RAW] ")46
(display (irc-message-raw msg))47
(newline)))49
;; Handle PRIVMSG50
(irc-on conn 'PRIVMSG51
(lambda (msg)52
(display "[MSG] <")53
(display (irc-message-nick msg))54
(display "> ")55
(display (irc-message-text msg))56
(newline)))58
;; Handle JOIN59
(irc-on conn 'JOIN60
(lambda (msg)61
(display "[JOIN] ")62
(display (irc-message-nick msg))63
(display " joined ")64
(display (or (irc-message-target msg) (irc-message-trailing msg)))65
(newline)))67
;; Handle PART68
(irc-on conn 'PART69
(lambda (msg)70
(display "[PART] ")71
(display (irc-message-nick msg))72
(display " left ")73
(display (irc-message-target msg))74
(newline)))76
;; Handle numeric 001 (welcome)77
(irc-on conn (string->symbol "001")78
(lambda (msg)79
(display "[CONNECTED] ")80
(display (irc-message-trailing msg))81
(newline)82
;; Join a test channel after connecting83
(display "Joining #systemcrafters-live...")84
(newline)85
(irc-join conn "#systemcrafters-live")))87
;; Handle numeric 332 (topic)88
(irc-on conn (string->symbol "332")89
(lambda (msg)90
(display "[TOPIC] ")91
(display (irc-message-trailing msg))92
(newline)))94
;; Handle PING95
(irc-on conn 'PING96
(lambda (msg)97
(display "[PING] Responding to server ping")98
(newline)))100
(display "Connecting...")101
(newline)103
(irc-connect conn)105
(display "Connected! Running event loop (Ctrl+C to exit)...")106
(newline)108
(irc-run conn)