Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang s-exp "lang/irc.rkt"
- (require racket/match
- racket/string)
- (define msg-log
- (make-hash))
- (define (add-to-log key msg)
- (hash-update! msg-log
- key
- (λ (v) (cons msg v))
- '()))
- (define (get-log key)
- (hash-ref msg-log key '()))
- (define (echo con src dst msg)
- (define key
- (list con dst))
- (match (regexp-match #px"^s/((?:[^/]|\\\\.)*)/((?:[^/]|\\\\.)*)/(.*)$" msg)
- [(list _ pat rep ext)
- (define matching
- (for/or ([x (in-list (get-log key))]
- #:when (regexp-match? pat x))
- x))
- (define replace
- (if (string-contains? ext "g")
- regexp-replace*
- regexp-replace))
- (when matching
- (let ([replaced (replace pat matching rep)])
- (add-to-log key replaced)
- (irc-send-message! con dst replaced)))]
- [_ (add-to-log key msg)]))
- ===================
- #:nick iised
- #:user iised
- #:real "iitalics's bot"
- #:description "sed-style replacement bot, e.g. s/<regexp>/<replacement>/"
- #:channels ([("irc.freenode.net" 6667) "#ccisneu_bots" "#ccisneu"])
- #:hooks (echo)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement