;;;
;;; ERC configuration
-(load "~/.erc-auth.el")
(setq erc-nick "mdw"
erc-user-full-name "Mark Wooding")
("cam.irc.devel.ncipher.com"
"#devel" "#jukebox" "#nextgen" "#sec-team")
("chiark.greenend.org.uk" "#chiark")
- ("irc.distorted.org.uk" "#distorted" "#jukebox")))
+ ("irc.distorted.org.uk" "#distorted" "#jukebox")
+ ("irc.hstg.corp.good.com" "#hstg")))
-(defvar mdw-erc-auto-greet-bots-alist
- `(("irc.ssdis.loc" "fastness"
- ,(format "identpass mwooding %s" mdw-fastness-password))
- ("cam.irc.devel.ncipher.com" "fastness"
- ,(format "identpass mwooding %s" mdw-fastness-password))
- ("chiark.greenend.org.uk" "blight"
- ,(format "identpass mdw %s" mdw-blight-password))
- ("tunnel.chiark.greenend.org.uk" "blight"
- ,(format "identpass mdw %s" mdw-blight-password))
- ("irc.distorted.org.uk" "blight"
- ,(format "identpass mdw %s" mdw-distorted-password)))
+(defvar mdw-erc-auto-greet-bots-alist nil
"*Alist of (SERVER-REGEXP BOT-NICK MESSAGE-FORM).
Evaluate MESSAGE-FORM and sent to BOT-NICK when connected to a server which
matches SERVER-REGEXP.")
+(defvar mdw-erc-ircop-alist nil
+ "*Alist of (SERVER-REGEXP ACCT PASSWD).
+Login details for claiming server admin rights.")
+
+(defun mdw-define-bot-greeting (server bot greeting)
+ "Define a new bot greeting."
+ (setq mdw-erc-auto-greet-bots-alist
+ (cons (list server bot greeting)
+ (remove* server mdw-erc-auto-greet-bots-alist
+ :test #'string= :key #'car))))
+(defun mdw-add-ircop-credentials (server acct passwd)
+ "Define a new set of `ircop' credentials."
+ (setq mdw-erc-ircop-alist
+ (cons (list server acct passwd)
+ (remove* server mdw-erc-ircop-alist
+ :test #'string= :key #'car)))))
+(load "~/.erc-auth.el")
+
+(defun mdw-assoc-regexp (regexp alist)
+ "Return the association in ALIST whose car matches REGEXP."
+ (let ((answer nil))
+ (dolist (l alist)
+ (when (string-match (car l) regexp)
+ (setq answer l)))
+ answer))
+
(defun mdw-erc-auto-greet-bots (server nick)
"Send greeting message to bots."
- (dolist (l mdw-erc-auto-greet-bots-alist)
- (when (string-match (car l) server)
- (let ((bot (cadr l))
- (message (caddr l)))
+ (let ((a (mdw-assoc-regexp server mdw-erc-auto-greet-bots-alist)))
+ (when a
+ (let ((bot (cadr a))
+ (message (caddr a)))
(erc-server-send (concat "PRIVMSG " bot " :" message))))))
(add-hook 'erc-after-connect 'mdw-erc-auto-greet-bots)
(defun erc-cmd-GREET ()
"Send greeting messages, according to `mdw-erc-auto-greet-bots-alist'."
(mdw-erc-auto-greet-bots erc-session-server (erc-current-nick)))
+
+(defun erc-cmd-IRCOP ()
+ "Claim `ircop' privileges."
+ (let ((a (mdw-assoc-regexp erc-session-server mdw-erc-ircop-alist)))
+ (when a
+ (let ((acct (cadr a))
+ (passwd (caddr a)))
+ (erc-server-send (concat "OPER " acct " " passwd))))))