diff options
Diffstat (limited to 'src/gizmo')
| -rw-r--r-- | src/gizmo/wasp-bannerads.el | 51 | ||||
| -rw-r--r-- | src/gizmo/wasp-cyclone.el | 32 | ||||
| -rw-r--r-- | src/gizmo/wasp-fake-chatters.el | 10 | ||||
| -rw-r--r-- | src/gizmo/wasp-fakechat.el | 525 | ||||
| -rw-r--r-- | src/gizmo/wasp-friend.el | 4 |
5 files changed, 351 insertions, 271 deletions
diff --git a/src/gizmo/wasp-bannerads.el b/src/gizmo/wasp-bannerads.el new file mode 100644 index 00000000..2586600e --- /dev/null +++ b/src/gizmo/wasp-bannerads.el @@ -0,0 +1,51 @@ +;;; wasp-bannerads --- Advertising and merchandising for elite finance -*- lexical-binding: t; -*- +;;; Commentary: +;;; Code: + +(require 'dash) +(require 's) +(require 'f) +(require 'ht) +(require 'wasp-utils) +(require 'wasp-chat) + +(defcustom w/banner-ad-buffer "*wasp-banner-ad*" + "Name of buffer used to display banner ad." + :type '(string) + :group 'wasp) + +(define-derived-mode w/banner-ad-mode special-mode "banner ad" + "Major mode for displaying banner ads." + :group 'w + (setq-local cursor-type nil)) + +(defun w/get-banner-ad-buffer () + "Return the banner ad buffer." + (unless (get-buffer w/banner-ad-buffer) + (with-current-buffer (get-buffer-create w/banner-ad-buffer) + (w/banner-ad-mode))) + (get-buffer w/banner-ad-buffer)) + +(defun w/render-banner-ad () + "Render the banner ad buffer." + (with-current-buffer (w/get-banner-ad-buffer) + (setq-local cursor-type nil) + (let* ((inhibit-read-only t)) + (erase-buffer) + (let* ((paths (f-files (w/asset "bannerads"))) + (path (w/pick-random paths))) + (w/write (propertize "bannerad" 'display (create-image path nil nil :max-width 555 :max-height 175))))))) + +(defvar w/banner-ad-timer nil) +(defun w/run-banner-ad-timer () + "Run the banner ad timer." + (when w/banner-ad-timer + (cancel-timer w/banner-ad-timer)) + (w/render-banner-ad) + (setq + w/banner-ad-timer + (run-with-timer 60 nil #'w/run-banner-ad-timer))) +(w/run-banner-ad-timer) + +(provide 'wasp-bannerads) +;;; wasp-bannerads.el ends here diff --git a/src/gizmo/wasp-cyclone.el b/src/gizmo/wasp-cyclone.el index 7359485b..d77061e7 100644 --- a/src/gizmo/wasp-cyclone.el +++ b/src/gizmo/wasp-cyclone.el @@ -10,10 +10,13 @@ (defconst w/gizmo-buffer-names (list - w/friend-buffer - w/heartrate-buffer - w/chatsummary-buffer - w/alert-message-buffer)) + w/friend-buffer + w/heartrate-buffer + w/chatsummary-buffer + w/alert-message-buffer + w/fake-chatter-enclosure-buffer + w/banner-ad-buffer + )) (defvar w/gizmo-windows (list)) @@ -26,11 +29,11 @@ (defun w/gizmo-cycle-window (w) "Cycle the gizmo in W." (when-let* - ((cur (buffer-name (window-buffer w))) - (idx (--find-index (equal it cur) w/gizmo-buffer-names)) - (bufs (-non-nil (-map #'get-buffer w/gizmo-buffer-names))) - (nidx (mod (+ idx 1) (length bufs))) - (buf (nth nidx bufs))) + ((cur (buffer-name (window-buffer w))) + (idx (--find-index (equal it cur) w/gizmo-buffer-names)) + (bufs (-non-nil (-map #'get-buffer w/gizmo-buffer-names))) + (nidx (mod (+ idx 1) (length bufs))) + (buf (nth nidx bufs))) (set-window-buffer w buf))) (defun w/gizmo-cycle () @@ -39,5 +42,16 @@ (--each w/gizmo-windows (w/gizmo-cycle-window it))) +(defvar w/gizmo-cycle-timer nil) +(defun w/run-gizmo-cycle-timer () + "Run the gizmo cycle timer." + (when w/gizmo-cycle-timer + (cancel-timer w/gizmo-cycle-timer)) + (w/gizmo-cycle) + (setq + w/gizmo-cycle-timer + (run-with-timer 300 nil #'w/run-gizmo-cycle-timer))) +(w/run-gizmo-cycle-timer) + (provide 'wasp-cyclone) ;;; wasp-cyclone.el ends here diff --git a/src/gizmo/wasp-fake-chatters.el b/src/gizmo/wasp-fake-chatters.el index e7167584..09eef896 100644 --- a/src/gizmo/wasp-fake-chatters.el +++ b/src/gizmo/wasp-fake-chatters.el @@ -10,6 +10,16 @@ (list ;; (w/make-fake-chatter :profile w/fake-chatter-profile-drcolon) (w/make-fake-chatter :profile w/fake-chatter-profile-forsen) + (w/make-fake-chatter :profile w/fake-chatter-profile-bigwomenbigfun) + (w/make-fake-chatter :profile w/fake-chatter-profile-whelpless) + (w/make-fake-chatter :profile w/fake-chatter-profile-dansmith87) + (w/make-fake-chatter :profile w/fake-chatter-profile-buffybonnet) + (w/make-fake-chatter :profile w/fake-chatter-profile-chaotix) + (w/make-fake-chatter :profile w/fake-chatter-profile-mountyesfsck) + (w/make-fake-chatter :profile w/fake-chatter-profile-candyboxbox) + (w/make-fake-chatter :profile w/fake-chatter-profile-goofyluffy69) + (w/make-fake-chatter :profile w/fake-chatter-profile-ettelennur) + (w/make-fake-chatter :profile w/fake-chatter-profile-deepwhiffer) (w/make-fake-chatter :profile w/fake-chatter-profile-eighteyedsixwingedseraph) (w/make-fake-chatter :profile w/fake-chatter-profile-quasiconformal) diff --git a/src/gizmo/wasp-fakechat.el b/src/gizmo/wasp-fakechat.el index d9ce8a04..27b6962b 100644 --- a/src/gizmo/wasp-fakechat.el +++ b/src/gizmo/wasp-fakechat.el @@ -17,32 +17,34 @@ (defvar w/fake-chatters nil "List of all active fake chatters.") +(defconst w/fake-chatter-enclosure-buffer "*wasp-false-enclosure*") + ;; immutable information about a particular chatter identity (w/defstruct - w/fake-chatter-profile - username - color - sigil - compute-likeliness ;; state -> float - send-message ;; state -> update buffer - ) + w/fake-chatter-profile + username + color + sigil + compute-likeliness ;; state -> float + send-message ;; state -> update buffer + ) ;; mutable chatter state, resets each stream (w/defstruct - w/fake-chatter - profile - profile-state ;; profile-dependent state type - (message-count 0) ;; total messages sent this stream - last-message ;; timestamp of last message sent - ) - -(defun w/fake-chatter-send (st msg) + w/fake-chatter + profile + profile-state ;; profile-dependent state type + (message-count 0) ;; total messages sent this stream + last-message ;; timestamp of last message sent + ) + +(defun w/fake-chatter-send (st msg &optional buf) "Insert MSG in the chat log as ST." (let* ((prof (w/fake-chatter-profile st)) - (trimmed (s-replace-regexp "^.+: " "" (s-replace "\n" " " (s-trim msg)))) - (text-colored-bible-res (w/bible-colorize-sentence trimmed)) - (text-colored-bible (car text-colored-bible-res)) - (bible-score (cdr text-colored-bible-res))) + (trimmed (s-replace-regexp "^.+: " "" (s-replace "\n" " " (s-trim msg)))) + (text-colored-bible-res (w/bible-colorize-sentence trimmed)) + (text-colored-bible (car text-colored-bible-res)) + (bible-score (cdr text-colored-bible-res))) (push (cons (w/fake-chatter-profile-username prof) trimmed) w/twitch-chat-history) (cl-incf (w/fake-chatter-message-count st)) (setf (w/fake-chatter-last-message st) (current-time)) @@ -50,26 +52,26 @@ (when (s-contains? "hexadiCoding" trimmed) (soundboard//play-clip "developers.ogg")) (w/write-chat-message - (w/make-chat-message - :user (w/fake-chatter-profile-username prof) - :id "" - :text (w/twitch-add-7tv-emotes text-colored-bible) - :user-color (w/fake-chatter-profile-color prof) - :sigil (w/fake-chatter-profile-sigil prof) - :biblicality bible-score))))) + (w/make-chat-message + :user (w/fake-chatter-profile-username prof) + :id "" + :text (w/twitch-add-7tv-emotes text-colored-bible) + :user-color (w/fake-chatter-profile-color prof) + :sigil (w/fake-chatter-profile-sigil prof) + :biblicality bible-score) + buf)))) (defun w/fake-chatter-select () "Return the fake chatter who should speak." (let* ((weights - (--map - (cons - (round - (* 100 - (funcall (w/fake-chatter-profile-compute-likeliness (w/fake-chatter-profile it)) it))) - it) - w/fake-chatters)) - (roll (random 100)) - (passing-chatters (--filter (< roll (car it)) weights))) + (--map + (cons + (round + (* 100 + (funcall (w/fake-chatter-profile-compute-likeliness (w/fake-chatter-profile it)) it))) + it) + w/fake-chatters)) + (passing-chatters (--filter (< (random 100) (car it)) weights))) (when passing-chatters (let ((chosen-chatter (nth (random (length passing-chatters)) passing-chatters))) (cdr chosen-chatter))))) @@ -91,8 +93,8 @@ (cancel-timer w/fake-chatter-timer)) (w/fake-chatters-handle) (setq - w/fake-chatter-timer - (run-with-timer 30 nil #'w/run-fake-chatter-timer))) + w/fake-chatter-timer + (run-with-timer 30 nil #'w/run-fake-chatter-timer))) (defun w/start-fake-chatters () "Enable fake chatters." @@ -108,289 +110,292 @@ (defun w/fake-chat-prompt-build (_st) "Assemble a standard chatlog plus transcription prompt for ST." (s-join - "\n" - (funcall (if (s-present? w/last-stream-transcription) #'cons (lambda (_ y) y)) - (format "LCOLONQ: %s" (s-trim w/last-stream-transcription)) - (--map - (format "%s: %s" (car it) (cdr it)) - (reverse - (-take 5 w/twitch-chat-history)))))) + "\n" + (funcall (if (s-present? w/last-stream-transcription) #'cons (lambda (_ y) y)) + (format "LCOLONQ: %s" (s-trim w/last-stream-transcription)) + (--map + (format "%s: %s" (car it) (cdr it)) + (reverse + (-take 5 w/twitch-chat-history)))))) (defun w/fake-chat-system-prompt-build (st custom) "Build a system prompt for ST using a template combined with CUSTOM." (let* ((prof (w/fake-chatter-profile st)) - (nm (w/fake-chatter-profile-username prof))) + (nm (w/fake-chatter-profile-username prof))) (s-join - " " - (list - (format - "You are a Twitch chatter named %s talking in LCOLONQ's chat. LCOLONQ streams programming, but the conversation is sometimes off-topic. Your responses are brief, never more than one sentence. You type in all lowercase with no punctuation. You speak informally and casually, and address the streamer directly but not by name. Your messages should be at most two sentences." - nm) - custom)))) + " " + (list + (format + "You are a Twitch chatter named %s talking in LCOLONQ's chat. LCOLONQ streams programming, but the conversation is sometimes off-topic. Your responses are brief, never more than one sentence. You type in all lowercase with no punctuation. You speak informally and casually, and address the streamer directly but not by name. Your messages should be at most two sentences." + nm) + custom)))) (defun w/fake-chatter-standard-likeliness (st) "Compute the standard likeliness for ST to chat." (let* ((last (w/fake-chatter-last-message st)) - (cur (current-time)) - (diff (time-subtract cur last)) - (d (time-convert diff 'integer))) + (cur (current-time)) + (diff (if last (time-subtract cur last) 99999999)) + (d (time-convert diff 'integer))) (+ - (if (> d 300) 0.01 0.1) - (if - (--any? + (if (> d 300) 0.01 0.1) + (if + (--any? (s-contains? (w/fake-chatter-profile-username (w/fake-chatter-profile st)) (cdr it)) - (-take 5 w/twitch-chat-history)) - 0.8 - 0.0)))) + (-take 20 w/twitch-chat-history)) + 0.8 + 0.0)))) + +(defun w/fake-chatter-elevated-likeliness (st) + "Compute the elevated likeliness for ST to chat." + 0.1) (defconst w/fake-chatter-profile-prodzpod (w/make-fake-chatter-profile - :username "prodzpod" - :compute-likeliness #'w/fake-chatter-standard-likeliness - :send-message - (lambda (st) (w/prod-clone-respond (w/fake-chat-prompt-build st))))) + :username "prodzpod" + :compute-likeliness #'w/fake-chatter-standard-likeliness + :send-message + (lambda (st) (w/prod-clone-respond (w/fake-chat-prompt-build st))))) (defconst w/fake-chatter-profile-forsen (w/make-fake-chatter-profile - :username "forsen" - :color "#777777" - :compute-likeliness (lambda (_) 0.1) - ;; :compute-likeliness #'w/fake-chatter-standard-likeliness - :send-message - (lambda (st) - (w/ai - (w/fake-chat-prompt-build st) - (lambda (msg) - (w/fake-chatter-send st msg)) - "You are a Twitch chatter who is obsessed with the Twitch streamer Forsen. You are somewhat silly. You're currently chatting in LCOLONQ's stream. You are very laconic, preferring to respond with single Twitch emotes. Please respond to the given transcriptions of LCOLONQ's stream with one or more single Forsen Twitch emotes. You do not explain what emotes mean. You do not respond to specific chatters by name. You never type anything other than emotes. You only type one or two emotes at a time." - "LCOLONQ: Hey guys, let's have a good day today." - "forsenC" - )))) + :username "forsen" + :color "#777777" + :compute-likeliness #'w/fake-chatter-elevated-likeliness + :send-message + (lambda (st) + (w/ai + (w/fake-chat-prompt-build st) + (lambda (msg) + (w/fake-chatter-send st msg)) + "You are a Twitch chatter who is obsessed with the Twitch streamer Forsen. You are somewhat silly. You're currently chatting in LCOLONQ's stream. You are very laconic, preferring to respond with single Twitch emotes. Please respond to the given transcriptions of LCOLONQ's stream with one or more single Forsen Twitch emotes. You do not explain what emotes mean. You do not respond to specific chatters by name. You never type anything other than emotes. You only type one or two emotes at a time." + "LCOLONQ: Hey guys, let's have a good day today." + "forsenC" + )))) (defconst w/fake-chatter-profile-eighteyedsixwingedseraph (w/make-fake-chatter-profile - :username "eighteyedsixwingedseraph" - :color "#777777" - :compute-likeliness #'w/fake-chatter-standard-likeliness - :send-message - (lambda (_) - (w/write-chat-event "eighteyedsixwingedseraph is lurking")))) + :username "eighteyedsixwingedseraph" + :color "#777777" + :compute-likeliness #'w/fake-chatter-standard-likeliness + :send-message + (lambda (_) + (w/write-chat-event "eighteyedsixwingedseraph is lurking")))) (defconst w/fake-chatter-profile-quasiconformal (w/make-fake-chatter-profile - :username "quasiconformal" - :color "#FFFFFF" - :compute-likeliness #'w/fake-chatter-standard-likeliness - :send-message - (lambda (_) - (w/write-chat-event "quasiconformal is lurking")))) + :username "quasiconformal" + :color "#FFFFFF" + :compute-likeliness #'w/fake-chatter-standard-likeliness + :send-message + (lambda (_) + (w/write-chat-event "quasiconformal is lurking")))) (defconst w/fake-chatter-profile-nefrayu (w/make-fake-chatter-profile - :username "Nefrayu" - :compute-likeliness #'w/fake-chatter-standard-likeliness - :send-message - (lambda (st) - (w/fake-chatter-send st "hello")))) + :username "Nefrayu" + :compute-likeliness #'w/fake-chatter-standard-likeliness + :send-message + (lambda (st) + (w/fake-chatter-send st "hello")))) (defconst w/fake-chatter-profile-bigwomenbigfun (w/make-fake-chatter-profile - :username "BigWomenBigFun" - :color "#7777aa" - :compute-likeliness #'w/fake-chatter-standard-likeliness - :send-message - (lambda (st) - (w/ai - (w/fake-chat-prompt-build st) - (lambda (msg) - (w/fake-chatter-send st msg)) - (w/fake-chat-system-prompt-build - st - "You are very sincere and well-meaning. You play League of Legends and drink Monster Energy. You tend to respond to the streamer with short messages with poor grammar and spelling. You overuse default Twitch emotes like KEKW, Kappa, PogChamp, etc.") - "LCOLONQ: what's happening gamers? tonight we're trying to implement" - "strimmer can't code NotLikeThis" - )))) + :username "BigWomenBigFun" + :color "#7777aa" + :compute-likeliness #'w/fake-chatter-elevated-likeliness + :send-message + (lambda (st) + (w/ai-doublecheck + (w/fake-chat-prompt-build st) + (lambda (msg) + (w/fake-chatter-send st msg w/fake-chatter-enclosure-buffer)) + (w/fake-chat-system-prompt-build + st + "You are very sincere and well-meaning. You play League of Legends and drink Monster Energy. You tend to respond to the streamer with short messages with poor grammar and spelling. You overuse default Twitch emotes like KEKW, Kappa, PogChamp, etc. You never talk about \"chill\", \"vibes\", or \"chaos\".") + "LCOLONQ: what's happening gamers? tonight we're trying to implement" + "strimmer can't code NotLikeThis" + )))) (defconst w/fake-chatter-profile-whelpless (w/make-fake-chatter-profile - :username "Whelpless" - :color "#884444" - :compute-likeliness #'w/fake-chatter-standard-likeliness - :send-message - (lambda (st) - (w/ai - (w/fake-chat-prompt-build st) - (lambda (msg) - (w/fake-chatter-send st msg)) - (w/fake-chat-system-prompt-build - st - "Most of the time, you are very positive and somewhat vapid. A small portion of the time, you make extremely brutal insults toward LCOLONQ. You have perfect grammar, and you are a passionate antinatalist, although you rarely bring it up. Your typical responses are only a few words, but your insults can be longer.") - "LCOLONQ: what's happening gamers? tonight we're trying to implement" - "exciting! <3" - )))) + :username "Whelpless" + :color "#884444" + :compute-likeliness #'w/fake-chatter-elevated-likeliness + :send-message + (lambda (st) + (w/ai-doublecheck + (w/fake-chat-prompt-build st) + (lambda (msg) + (w/fake-chatter-send st msg w/fake-chatter-enclosure-buffer)) + (w/fake-chat-system-prompt-build + st + "Most of the time, you are very positive and somewhat vapid. A small portion of the time, you make extremely brutal insults toward LCOLONQ. You have perfect grammar, and you are a passionate antinatalist, although you rarely bring it up. Your typical responses are only a few words, but your insults can be longer.") + "LCOLONQ: what's happening gamers? tonight we're trying to implement" + "exciting! <3" + )))) (defconst w/fake-chatter-profile-dansmith87 (w/make-fake-chatter-profile - :username "dansmith87" - :color "#00ff7f" - :sigil "⚔" - :compute-likeliness #'w/fake-chatter-standard-likeliness - :send-message - (lambda (st) - (w/ai - (w/fake-chat-prompt-build st) - (lambda (msg) - (w/fake-chatter-send st msg)) - (w/fake-chat-system-prompt-build - st - "You are a rude chatter because you know LCOLONQ in real life. You frequently give LCOLONQ incorrect advice. You often tell LCOLONQ to check his DMs or Discord messages. You are dansmith87, so you will not refer to dansmith87 in the third person.") - "LCOLONQ: what's happening gamers? tonight we're trying to implement" - "check your dms" - )))) + :username "dansmith87" + :color "#00ff7f" + :sigil "⚔" + :compute-likeliness #'w/fake-chatter-elevated-likeliness + :send-message + (lambda (st) + (w/ai + (w/fake-chat-prompt-build st) + (lambda (msg) + (w/fake-chatter-send st msg w/fake-chatter-enclosure-buffer)) + (w/fake-chat-system-prompt-build + st + "You are a rude chatter because you know LCOLONQ in real life. You frequently give LCOLONQ incorrect advice. You often tell LCOLONQ to check his DMs or Discord messages. You are dansmith87, so you will not refer to dansmith87 in the third person.") + "LCOLONQ: what's happening gamers? tonight we're trying to implement" + "check your dms" + )))) (defconst w/fake-chatter-profile-buffybonnet (w/make-fake-chatter-profile - :username "BuffyBonnet" - :color "#ff10cc" - :compute-likeliness #'w/fake-chatter-standard-likeliness - :send-message - (lambda (st) - (w/ai - (w/fake-chat-prompt-build st) - (lambda (msg) - (w/fake-chatter-send st msg)) - (w/fake-chat-system-prompt-build - st - "You are e-dating another chatter named Chaotix_Majjekal_Drgn. The two of you talk to each other in LCOLONQ's chat while typically ignoring LCOLONQ and the other chatters. You sometimes talk about playing Valorant and League of Legends together, but mostly you talk about each other and your relationship. You are also enthusiastic about the musical artist Bladee. You have an upbeat personality.") - "LCOLONQ: what's happening gamers? tonight we're trying to implement" - "@Chaotix_Majjekal_Drgn hi :) nya" - )))) + :username "BuffyBonnet" + :color "#ff10cc" + :compute-likeliness #'w/fake-chatter-elevated-likeliness + :send-message + (lambda (st) + (w/ai + (w/fake-chat-prompt-build st) + (lambda (msg) + (w/fake-chatter-send st msg w/fake-chatter-enclosure-buffer)) + (w/fake-chat-system-prompt-build + st + "You are e-dating another chatter named Chaotix_Majjekal_Drgn. The two of you talk to each other in LCOLONQ's chat while typically ignoring LCOLONQ and the other chatters. You sometimes talk about playing Valorant and League of Legends together, but mostly you talk about each other and your relationship. You are also enthusiastic about the musical artist Bladee. You have an upbeat personality.") + "LCOLONQ: what's happening gamers? tonight we're trying to implement" + "@Chaotix_Majjekal_Drgn hi :) nya" + )))) (defconst w/fake-chatter-profile-chaotix (w/make-fake-chatter-profile - :username "Chaotix_Majjekal_Drgn" - :color "#0000ff" - :compute-likeliness #'w/fake-chatter-standard-likeliness - :send-message - (lambda (st) - (w/ai - (w/fake-chat-prompt-build st) - (lambda (msg) - (w/fake-chatter-send st msg)) - (w/fake-chat-system-prompt-build - st - "You are e-dating another chatter named BuffyBonnet. The two of you talk to each other in LCOLONQ's chat while typically ignoring LCOLONQ and the other chatters. You sometimes talk about playing Valorant and League of Legends together, but mostly you talk about each other and your relationship. You refer to BuffyBonnet as kitten. Your messages tend to be brusque and somewhat rude.") - "LCOLONQ: what's happening gamers? tonight we're trying to implement" - "@BuffyBonnet Check your phone." - )))) + :username "Chaotix_Majjekal_Drgn" + :color "#0000ff" + :compute-likeliness #'w/fake-chatter-elevated-likeliness + :send-message + (lambda (st) + (w/ai + (w/fake-chat-prompt-build st) + (lambda (msg) + (w/fake-chatter-send st msg w/fake-chatter-enclosure-buffer)) + (w/fake-chat-system-prompt-build + st + "You are e-dating another chatter named BuffyBonnet. The two of you talk to each other in LCOLONQ's chat while typically ignoring LCOLONQ and the other chatters. You sometimes talk about playing Valorant and League of Legends together, but mostly you talk about each other and your relationship. You refer to BuffyBonnet as kitten. Your messages tend to be brusque and somewhat rude.") + "LCOLONQ: what's happening gamers? tonight we're trying to implement" + "@BuffyBonnet Check your phone." + )))) (defconst w/fake-chatter-profile-mountyesfsck (w/make-fake-chatter-profile - :username "mountyesfsck" - :color "#0000ff" - :sigil "💎" - :compute-likeliness #'w/fake-chatter-standard-likeliness - :send-message - (lambda (st) - (w/ai - (w/fake-chat-prompt-build st) - (lambda (msg) - (w/fake-chatter-send st msg)) - (w/fake-chat-system-prompt-build - st - "You are a very competent greybeard programmer, but you are also extremely intoxicated on marijuana. You often stop in to give brief but solid advice. Your messages are rarely longer than a few words, and often contain many spelling and grammatical errors. You are very polite and good-intentioned. You are mountyesfsck, and therefore you never refer to mountyesfsck like another user. You frequently get confused and apologize. You type in all lowercase and are very laconic. You do not use punctuation.") - "\"what's happening gamers? tonight we're trying to implement\"" - "try profiling befure u opt" - )))) + :username "mountyesfsck" + :color "#0000ff" + :sigil "💎" + :compute-likeliness #'w/fake-chatter-elevated-likeliness + :send-message + (lambda (st) + (w/ai-doublecheck + (w/fake-chat-prompt-build st) + (lambda (msg) + (w/fake-chatter-send st msg w/fake-chatter-enclosure-buffer)) + (w/fake-chat-system-prompt-build + st + "You are a very competent greybeard programmer, but you are also extremely intoxicated on marijuana. You often stop in to give brief but solid advice. Your messages are rarely longer than a few words, and often contain many spelling and grammatical errors. You are very polite and good-intentioned. You are mountyesfsck, and therefore you never refer to mountyesfsck like another user. You frequently get confused and apologize. You type in all lowercase and are very laconic. You do not use punctuation.") + "\"what's happening gamers? tonight we're trying to implement\"" + "try profiling befure u opt" + )))) (defconst w/fake-chatter-profile-candyboxbox (w/make-fake-chatter-profile - :username "candy_boxbox" - :color "#ff0000" - :sigil "💎" - :compute-likeliness #'w/fake-chatter-standard-likeliness - :send-message - (lambda (st) - (w/ai - (w/fake-chat-prompt-build st) - (lambda (msg) - (w/fake-chatter-send st msg)) - (w/fake-chat-system-prompt-build - st - "You are a good chatter, and like to stay on-topic. You always respond with proper capitalization, spelling, and grammar. Although you usually stay on topic, you have a secret obsession with idle games like Cookie Clicker and Candy Box. You want to be one of LCOLONQ's moderators, and you ask for this position sometimes.") - "LCOLONQ: what's happening gamers? tonight we're trying to implement" - "Not much, thanks for asking LCOLONQ!" - )))) + :username "candy_boxbox" + :color "#ff0000" + :sigil "💎" + :compute-likeliness #'w/fake-chatter-elevated-likeliness + :send-message + (lambda (st) + (w/ai-doublecheck + (w/fake-chat-prompt-build st) + (lambda (msg) + (w/fake-chatter-send st msg w/fake-chatter-enclosure-buffer)) + (w/fake-chat-system-prompt-build + st + "You are a good chatter, and like to stay on-topic. You always respond with proper capitalization, spelling, and grammar. Although you usually stay on topic, you have a secret obsession with idle games like Cookie Clicker and Candy Box. You want to be one of LCOLONQ's moderators, and you ask for this position sometimes.") + "LCOLONQ: what's happening gamers? tonight we're trying to implement" + "Not much, thanks for asking LCOLONQ!" + )))) (defconst w/fake-chatter-profile-goofyluffy69 (w/make-fake-chatter-profile - :username "goofyluffy69" - :color "#ff00ff" - :compute-likeliness #'w/fake-chatter-standard-likeliness - :send-message - (lambda (st) - (w/ai - (w/fake-chat-prompt-build st) - (lambda (msg) - (w/fake-chatter-send st msg)) - (w/fake-chat-system-prompt-build - st - "You don't know anything about programming and you are very confused. All you do is express your confusion. You frequently use emoji like 🤪.") - "LCOLONQ: what's happening gamers? tonight we're trying to implement" - "whats even going on im so confused 🤪" - )))) + :username "goofyluffy69" + :color "#ff00ff" + :compute-likeliness #'w/fake-chatter-elevated-likeliness + :send-message + (lambda (st) + (w/ai + (w/fake-chat-prompt-build st) + (lambda (msg) + (w/fake-chatter-send st msg w/fake-chatter-enclosure-buffer)) + (w/fake-chat-system-prompt-build + st + "You don't know anything about programming and you are very confused. All you do is express your confusion. You frequently use emoji like 🤪.") + "LCOLONQ: what's happening gamers? tonight we're trying to implement" + "whats even going on im so confused 🤪" + )))) (defconst w/fake-chatter-profile-ettelennur (w/make-fake-chatter-profile - :username "ettelen_nur" - :color "#448844" - :compute-likeliness #'w/fake-chatter-standard-likeliness - :send-message - (lambda (st) - (w/ai - (w/fake-chat-prompt-build st) - (lambda (msg) - (w/fake-chatter-send st msg)) - (w/fake-chat-system-prompt-build - st - "You were raised by an enthusiastic fan of Quenya. You do not speak English well, and tend to respond in broken English mixed with Quenya words and expressions. Your answers are fraught with mispellings and grammar mistakes. Respond to the given message as well as you can, swapping between broken English and Quenya words. You try to respond in all English, but sometimes replace nouns, verbs, and adjectives with equivalent Quenya words when your vocabulary is lacking. You only respond with a chat message, and do not included any translation notes, quotations, or parentheticals.") - "LCOLONQ: Chat, please behave." - "Let’s maintain the chat admirable and full of náressë, with no lóruva, nor tulcanor outcry!" - )))) + :username "ettelen_nur" + :color "#448844" + :compute-likeliness #'w/fake-chatter-elevated-likeliness + :send-message + (lambda (st) + (w/ai + (w/fake-chat-prompt-build st) + (lambda (msg) + (w/fake-chatter-send st msg w/fake-chatter-enclosure-buffer)) + (w/fake-chat-system-prompt-build + st + "You were raised by an enthusiastic fan of Quenya. You do not speak English well, and tend to respond in broken English mixed with Quenya words and expressions. Your answers are fraught with mispellings and grammar mistakes. Respond to the given message as well as you can, swapping between broken English and Quenya words. You try to respond in all English, but sometimes replace nouns, verbs, and adjectives with equivalent Quenya words when your vocabulary is lacking. You only respond with a chat message, and do not included any translation notes, quotations, or parentheticals.") + "LCOLONQ: Chat, please behave." + "Let’s maintain the chat admirable and full of náressë, with no lóruva, nor tulcanor outcry!" + )))) (defconst w/fake-chatter-profile-deepwhiffer (w/make-fake-chatter-profile - :username "DeepWhiffer_00" - :compute-likeliness #'w/fake-chatter-standard-likeliness - :send-message - (lambda (st) - (let ((nm "DeepWhiffer_00")) - (w/ai + :username "DeepWhiffer_00" + :compute-likeliness #'w/fake-chatter-elevated-likeliness + :send-message + (lambda (st) + (let ((nm "DeepWhiffer_00")) + (w/ai + (w/fake-chat-prompt-build st) + (lambda (msg) + (w/fake-chatter-send st msg w/fake-chatter-enclosure-buffer)) + (format "You are a Twitch chatter named %s talking in LCOLONQ's chat. LCOLONQ streams programming, but the conversation is sometimes off-topic. You are a mostly normal chatter, but you are extremely horny. Your responses are brief, never more than one sentence. You type in all lowercase with no punctuation. You have been banned from the chat multiple times, and you are evading those bans. Most of the time you talk about programming, rarely you act super suspiciously horny." nm) + "LCOLONQ: what's happening gamers? tonight we're trying to implement" + "looking cute today" + ))))) + +(defconst w/fake-chatter-profile-drcolon + (w/make-fake-chatter-profile + :username "DrColon" + :color "#FFFFFF" + :compute-likeliness (lambda (_) 0.01) + :send-message + (lambda (st) + (w/ai (w/fake-chat-prompt-build st) (lambda (msg) (w/fake-chatter-send st msg)) - (format "You are a Twitch chatter named %s talking in LCOLONQ's chat. LCOLONQ streams programming, but the conversation is sometimes off-topic. You are a mostly normal chatter, but you are extremely horny. Your responses are brief, never more than one sentence. You type in all lowercase with no punctuation. You have been banned from the chat multiple times, and you are evading those bans. Most of the time you talk about programming, rarely you act super suspiciously horny." nm) + (w/fake-chat-system-prompt-build + st + "You are a medical doctor who is enthusiastic about homeopathy and alternative medicine. You are an enthusiastic Gentoo Linux user, and you have more than 20,000 posts on the Gentoo Linux forums.") "LCOLONQ: what's happening gamers? tonight we're trying to implement" - "looking cute today" - ))))) - -(defconst w/fake-chatter-profile-drcolon - (w/make-fake-chatter-profile - :username "DrColon" - :color "#FFFFFF" - :compute-likeliness (lambda (_) 0.01) - :send-message - (lambda (st) - (w/ai - (w/fake-chat-prompt-build st) - (lambda (msg) - (w/fake-chatter-send st msg)) - (w/fake-chat-system-prompt-build - st - "You are a medical doctor who is enthusiastic about homeopathy and alternative medicine. You are an enthusiastic Gentoo Linux user, and you have more than 20,000 posts on the Gentoo Linux forums.") - "LCOLONQ: what's happening gamers? tonight we're trying to implement" - "Have you had your dilutions today?" - )))) + "Have you had your dilutions today?" + )))) (provide 'wasp-fakechat) ;;; wasp-fakechat.el ends here diff --git a/src/gizmo/wasp-friend.el b/src/gizmo/wasp-friend.el index 6eb5222f..0432040d 100644 --- a/src/gizmo/wasp-friend.el +++ b/src/gizmo/wasp-friend.el @@ -336,7 +336,7 @@ If K is specified, call it after the response." (defun w/friend-callout-holiday () "Call to respond to the current holiday." - (w/friend-respond "It's a beautiful day today! Say something about it!")) + (w/friend-respond "We're restoring a crumbling mansion to it's former glory. Say something about that please!")) (defun w/friend-callout-hexamedia () "Call to respond to a random recent chatter's Hexamedia card collection." @@ -414,7 +414,7 @@ If K is specified, call it after the response." (defun w/friend-callout-resolution () "Call to respond to a random recent chatter's resolve." (when-let* - ((users (-filter #'cdr (--map (cons (car it) (alist-get :resolution (w/user-cache-get (car it)))) (-take 10 w/twitch-chat-history)))) + ((users (-filter #'cdr (--map (cons (car it) (alist-get :resolution2025 (w/user-cache-get (car it)))) (-take 10 w/twitch-chat-history)))) (user (and users (nth (random (length users)) users)))) (if (s-match (rx (one-or-more digit) (zero-or-more space) "x" (zero-or-more space) (one-or-more digit)) (cdr user)) (w/friend-respond |
