Anyone use it any more? #newlisp's topic still says latest release 8.7.0. I've visited it the last few days and only me and ChanServ were there... ChanServ isn't much for company :-/
Jeremy
#newlisp
-
- Posts: 2038
- Joined: Tue Nov 29, 2005 8:28 pm
- Location: latiitude 50N longitude 3W
- Contact:
-
- Posts: 2038
- Joined: Tue Nov 29, 2005 8:28 pm
- Location: latiitude 50N longitude 3W
- Contact:
-
- Posts: 2038
- Joined: Tue Nov 29, 2005 8:28 pm
- Location: latiitude 50N longitude 3W
- Contact:
Norman - can you explain your irc.lsp file on your site:
I tried it out but it didn't work.. Any clues? I changed the names, but after
#newlisp :End of /NAMES list.
it didn't seem to do anything... Should I start typing?
I've tried #newlisp with Colloquy (a MacOS client) and it worked well. But I'm intrigued by your very compact version!
Code: Select all
(setq online 'true)
;; connect to irc server no error checking done
(setq server (net-connect "irc.freenode.net" 6667))
;; login and join
(net-send server "USER ircnewlisp 0 * :ircuser\r\n")
(net-send server "NICK ircuser\r\n")
(net-send server "JOIN #ircgroup-here\r\n")
;; dont use (net-error) in a while loop by default.
;; You dont want you while loop to quit on all net-errors.
(while online
(if (net-select server "read" 1000)
(begin
;; do linebased receive
(net-receive server 'buffer 8192 "\n")
(print buffer)
;; AUTO ping reply!
(if (regex {^PING :(.*)\r\n} buffer)
(begin
(println "NEWLISP >> PONG :"$1)
(net-send server (append "PONG :" (string $1 ) "\r\n"))
)
)
)
)
(if (net-error) (println "NEWLISP >> " (net-error)))
)
#newlisp :End of /NAMES list.
it didn't seem to do anything... Should I start typing?
I've tried #newlisp with Colloquy (a MacOS client) and it worked well. But I'm intrigued by your very compact version!
I used that script for my auto "newlisp-news" bot.. But i think thats a long time ago..
In the meantime also the IRC server have change policy's, like cant send anonymous messages etc... due to spam..
This script is actualy very RAW.. Its a step by step connect which cant handle any
failure ;-)
he best way is to retry again step by step...
here is the code of that thing, replace XXXXXXX with i.e. cormullion ->
#!/usr/bin/newlisp
(define (fetch-news)
(set 'rssbuffer '())
(set 'urldata (get-url "http://newlisp.org/rss.cgi?News"))
;; check if get-url had an error
;;(if (not (net-error))
(begin
(xml-type-tags nil 'cdata '!-- nil)
(set 'url (xml-parse urldata (+ 1 2 8 16)))
;; continue if no xml-error detected and if url is not empty
(if (and (not (xml-error)) (not (empty? url)) )
(begin
;; remove headers etc...
(until (= (first (nth 0 url)) 'rss ) (pop url))
(set 'rsschannel (nth 2 (nth 0 url)))
(set 'rsschannellen (length rsschannel))
(dotimes (y rsschannellen)
(if (list? (nth y rsschannel))
(if (= (nth 0 (nth y rsschannel)) 'item )
(push (lookup 'title (nth y rsschannel)) rssbuffer -1 ) )))
)
)
)
;;)
;; we got an error somewhere, so notify someting nice to the user..
(if (empty? rssbuffer) (push "No newLisp News available at the moment, try again later..." rssbuffer))
)
;; fetch once..
(fetch-news)
;; fetch every 5 minutes new data!
(timer 'fetch-news 300)
(setq online 'true)
;; connect to irc server no error checking done
(setq server (net-connect "irc.freenode.net" 6667))
;; login and join
(net-send server "USER newlispbot 0 * :XXXXXXX\r\n")
(net-send server "NICK newsbot\r\n")
(net-send server "JOIN #newlisp\r\n")
;;(net-send server (append "AWAY :" {Im a very sleepy bot...} "\r\n"))
;;(net-send server (append "PRIVMSG #newlisp " {:Hi, Im the newLisp RSS news robot, "/msg newsbot !news" } "\r\n"))
;; do not exit on (14 "select-failed")!
(while online
(if (net-select server "read" 1000)
(begin
;; do linebased receive
(net-receive server 'buffer 8192 "\n")
(print buffer)
;; AUTO ping reply!
(if (regex {^PING :(.*)\r\n} buffer)
(begin
(println "BOT --- PONG :"$1)
(net-send server (append "PONG :" (string $1 ) "\r\n"))
)
)
;;
;; Scan for !news
(if (regex {^:(.*)!(.*)PRIVMSG newsbot :(!news)\r\n} buffer)
(begin
(println "BOT --- PRIVMSG " $0)
(net-send server (append "PRIVMSG " $1 { :Im checking the RSS newLisp news, hold on! } "\r\n"))
;; read from pre-stored buffer by timer and send line by line!
(dolist (x rssbuffer) (net-send server (append "PRIVMSG " $1 " :" x "\r\n")) )
)
)
)
)
(if (net-error) (println "BOT --- " (net-error)))
)
(close server)
(println (net-error))
(exit)
In the meantime also the IRC server have change policy's, like cant send anonymous messages etc... due to spam..
This script is actualy very RAW.. Its a step by step connect which cant handle any
failure ;-)
he best way is to retry again step by step...
here is the code of that thing, replace XXXXXXX with i.e. cormullion ->
#!/usr/bin/newlisp
(define (fetch-news)
(set 'rssbuffer '())
(set 'urldata (get-url "http://newlisp.org/rss.cgi?News"))
;; check if get-url had an error
;;(if (not (net-error))
(begin
(xml-type-tags nil 'cdata '!-- nil)
(set 'url (xml-parse urldata (+ 1 2 8 16)))
;; continue if no xml-error detected and if url is not empty
(if (and (not (xml-error)) (not (empty? url)) )
(begin
;; remove headers etc...
(until (= (first (nth 0 url)) 'rss ) (pop url))
(set 'rsschannel (nth 2 (nth 0 url)))
(set 'rsschannellen (length rsschannel))
(dotimes (y rsschannellen)
(if (list? (nth y rsschannel))
(if (= (nth 0 (nth y rsschannel)) 'item )
(push (lookup 'title (nth y rsschannel)) rssbuffer -1 ) )))
)
)
)
;;)
;; we got an error somewhere, so notify someting nice to the user..
(if (empty? rssbuffer) (push "No newLisp News available at the moment, try again later..." rssbuffer))
)
;; fetch once..
(fetch-news)
;; fetch every 5 minutes new data!
(timer 'fetch-news 300)
(setq online 'true)
;; connect to irc server no error checking done
(setq server (net-connect "irc.freenode.net" 6667))
;; login and join
(net-send server "USER newlispbot 0 * :XXXXXXX\r\n")
(net-send server "NICK newsbot\r\n")
(net-send server "JOIN #newlisp\r\n")
;;(net-send server (append "AWAY :" {Im a very sleepy bot...} "\r\n"))
;;(net-send server (append "PRIVMSG #newlisp " {:Hi, Im the newLisp RSS news robot, "/msg newsbot !news" } "\r\n"))
;; do not exit on (14 "select-failed")!
(while online
(if (net-select server "read" 1000)
(begin
;; do linebased receive
(net-receive server 'buffer 8192 "\n")
(print buffer)
;; AUTO ping reply!
(if (regex {^PING :(.*)\r\n} buffer)
(begin
(println "BOT --- PONG :"$1)
(net-send server (append "PONG :" (string $1 ) "\r\n"))
)
)
;;
;; Scan for !news
(if (regex {^:(.*)!(.*)PRIVMSG newsbot :(!news)\r\n} buffer)
(begin
(println "BOT --- PRIVMSG " $0)
(net-send server (append "PRIVMSG " $1 { :Im checking the RSS newLisp news, hold on! } "\r\n"))
;; read from pre-stored buffer by timer and send line by line!
(dolist (x rssbuffer) (net-send server (append "PRIVMSG " $1 " :" x "\r\n")) )
)
)
)
)
(if (net-error) (println "BOT --- " (net-error)))
)
(close server)
(println (net-error))
(exit)
-- (define? (Cornflakes))