[[project @ 2002-11-04 23:46:59 by unknown_lamer] unknown_lamer**20021104234659 Eeep, I forgot that bobot-utils.scm hasn't been generated from the .in file in a long time. Re-adding file. ] { addfile ./scripts/bobot-utils.scm hunk ./scripts/bobot-utils.scm 1 - +;;; this is a library of stuff that bobot++ scripts would probably +;;; want to use. This file is autoloaded by bobot++ + +;;; This file is covered by the GPL version 2 or (at your option) any +;;; later version + +;;; Why the GPL? Technically anything that uses Bobot++'s functions +;;; must be GPLed, so all of your scripts have to be GPLed anyway +;;; because you are really linking with Bobot++, a GPLed program. + +;;; Bot load (loads a file from %bot:loadpath) + +(define %bot:loadpath (list + (string-append (getenv "HOME") + "/.bobotpp/scripts/") + bot:sys-scripts-dir)) + +(define (bot:load file) + (let loop ((load-path %bot:loadpath)) + (if (not (null? load-path)) + (if (catch 'system-error + (lambda () + (load + (string-append (car load-path) + file))) + (lambda args + #f )) + #t + (loop (cdr load-path))) + (begin (bot:log "ERROR: File " file " Not Found!\n") #f)))) + +;;; REGEX UTILS + +;;; match-not-channel adds a prefix regex to your regex so it doesn't +;;; match the sender or channel in a PUBLIC message +(define (bot:match-not-channel regex) + (string-append "^[[:graph:]]* [&#+!][^ ,\a]+ [[:graph:][:space:]]*" regex)) + +;;; match-to-me matches text that was addressed to the bot with a +;;; ':',',', or nothing after the bot name +(define (bot:match-to-me regex) + (string-append (match-not-channel (bot:getnickname)) + "[[:space:][:graph:]]*" regex)) + +;;;; string-utils +(define str-app string-append) ; shorter + + +;;;; Misc UTILS + +;;; bot-log: Write as many messages as you want to the log. If the +;;; arg is a thunk it will be executed and it's output will be +;;; written to the log +(define (bot:log . messages) + (for-each + (lambda (x) + (if (thunk? x) + (display (x) (bot-logport)) + (display x (bot-logport)))) + messages ) + (bot:flushport)) + +;;; Message sending utils + +;;; returns the CTCP quoted message +(define (ctcp-quote message) + message) ; FIXME: fill me in + +;;; DEPRECATED FUNCTION NAMES +;;; These are provided for backwards compatibility +;;; and will be removed in the 2.3 dev tree + +(define bot-load bot:load) +(define bot-action bot:action) +(define bot-adduser bot:adduser) +(define bot-addserver bot:addserver) +(define bot-addshit bot:addshit) +(define bot-ban bot:ban) +(define bot-cycle bot:cycle) +(define bot-deban bot:deban) +(define bot-delserver bot:delserver) +(define bot-deluser bot:deluser) +(define bot-delshit bot:delshit) +(define bot-deop bot:deop) +(define bot-die bot:die) +(define bot-do bot:do) +(define bot-invite bot:invite) +(define bot-join bot:join) +(define bot-keep bot:keep) +(define bot-kick bot:kick) +(define bot-kickban bot:kickban) +(define bot-lock bot:lock) +(define bot-logport bot:logport) +(define bot-mode bot:mode) +(define bot-msg bot:msg) +(define bot-nextserver bot:nextserver) +(define bot-nick bot:nick) +(define bot-op bot:op) +(define bot-part bot:part) +(define bot-reconnect bot:reconnect) +(define bot-say bot:say) +(define bot-server bot:server) +(define bot-setversion bot:setversion) +(define bot-tban bot:tban) +(define bot-tkban bot:tkban) +(define bot-topic bot:topic) +(define bot-unlock bot:unlock) +(define bot-getnickname bot:getnickname) +(define bot-getserver bot:getserver) +(define bot-getserverlist bot:getserverlist) +(define bot-flush bot:flush) +(define bot-flushport bot:flushport) +(define bot-random bot:random) +(define bot-addcommand bot:addcommand) +(define bot-delcommand bot:delcommand) +(define bot-addhook bot:addhook) +(define bot-addtimer bot:addtimer) +(define bot-deltimer bot:deltimer) }