You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.8 KiB
67 lines
1.8 KiB
(use-modules
|
|
(srfi srfi-1))
|
|
|
|
(weechat:register "FacebookRename" "wes" "0.1" "None" "Rename facebook users" "" "")
|
|
|
|
(define (get-upto strs pred)
|
|
(cond
|
|
((pred (string-take (car strs) 1)) (list (string-drop (car strs) 1)))
|
|
(else
|
|
(cons
|
|
(format "-~a" (car strs))
|
|
(get-upto (cdr strs) pred)))))
|
|
|
|
|
|
(define parse-nick (lambda (nick)
|
|
(apply string-append
|
|
(reverse
|
|
(get-upto nick (lambda (x) (equal? ":" x)))))))
|
|
|
|
|
|
(define realnames (make-hash-table 100))
|
|
|
|
(define buffer
|
|
(weechat:buffer_search
|
|
"irc"
|
|
"localhost.&bitlbee"))
|
|
|
|
(define print (lambda (x) (weechat:print buffer x)))
|
|
|
|
(define (update-nick! nick realname)
|
|
(print
|
|
(format "~a is ~a"
|
|
nick
|
|
realname))
|
|
(weechat:command
|
|
buffer
|
|
(format "/msg ~a rename ~a ~a"
|
|
"&bitlbee" nick realname)))
|
|
|
|
(define (whois-callback data signal signal-data)
|
|
(let* ((splitted (string-split signal-data #\space))
|
|
(nick (cadddr splitted))
|
|
(reversed (reverse splitted))
|
|
(realname (parse-nick reversed)))
|
|
(hash-set! realnames nick realname)
|
|
(if (not
|
|
(equal? realname nick))
|
|
(update-nick! nick realname))
|
|
weechat:WEECHAT_RC_OK))
|
|
|
|
(define (join-callback data signal signal-data)
|
|
(let* ((parsed (string-split signal-data #\,))
|
|
(buf (car parsed))
|
|
(nick (cadr parsed))
|
|
(realname (hash-ref realnames nick #f)))
|
|
(cond
|
|
((not (equal? buf buffer)) weechat:WEECHAT_RC_OK)
|
|
(realname weechat:WEECHAT_RC_OK)
|
|
(else
|
|
(weechat:command buffer
|
|
(format "/whois ~a localhost" nick))
|
|
weechat:WEECHAT_RC_OK))))
|
|
|
|
|
|
(weechat:hook_signal "localhost,irc_in_311" "whois-callback" "")
|
|
|
|
(weechat:hook_signal "nicklist_nick_added" "join-callback" "")
|
|
|