AtlatestRepositorysigil-irc

sigil-irc / tree / testmanual-test-libera.sgl

1;;; Test IRC connection to libera.chat
2;;;
3;;; Usage:
4;;; ./run-sigil eval -f packages/sigil-irc/test/test-libera.sgl
5;;;
6;;; Set environment variables for authentication:
7;;; IRC_NICK - Your IRC nickname
8;;; 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-user
23 (display "Using SASL authentication for: ")
24 (display sasl-user)
25 (newline))
27(define conn
28 (if (and sasl-user sasl-pass)
29 (make-irc-connection
30 server: "irc.libera.chat"
31 port: 6697
32 nick: nick
33 tls: #t
34 sasl-username: sasl-user
35 sasl-password: sasl-pass)
36 (make-irc-connection
37 server: "irc.libera.chat"
38 port: 6697
39 nick: nick
40 tls: #t)))
42;; Log all raw messages
43(irc-on-message conn
44 (lambda (msg)
45 (display "[RAW] ")
46 (display (irc-message-raw msg))
47 (newline)))
49;; Handle PRIVMSG
50(irc-on conn 'PRIVMSG
51 (lambda (msg)
52 (display "[MSG] <")
53 (display (irc-message-nick msg))
54 (display "> ")
55 (display (irc-message-text msg))
56 (newline)))
58;; Handle JOIN
59(irc-on conn 'JOIN
60 (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 PART
68(irc-on conn 'PART
69 (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 connecting
83 (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 PING
95(irc-on conn 'PING
96 (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)