An example matrix bot that posts images. If you post a link to a gif but are irked that your matrix client wont display the gif as a preview, then this is the bot for you. Just post your link in a room and posterbot will make sure your glorious gif is seen. *** To test in the repl - Clone this repo and granolin into your =~/quicklisp/local-projects= directory. For example: #+BEGIN_SRC bash cd ~/quicklisp/local-projects git clone https://github.com/cbeo/posterbot posterbot git clone https://github.com/cbeo/granolin granolin #+END_SRC - Fire up lisp and load the posterbot system, make a new instance, log in, and start #+BEGIN_SRC lisp (ql:quickload :posterbot) (in-package :posterbot) (let ((bot (make-instance 'posterbot :ssl nil :user-id "mybotaccount" :homeserver "localhost:8008"))) (login bot "mybotaccount" "mypassword") (start bot)) #+END_SRC - Invite the bot to a room, it should automatically accept your invitation. - Post a link to an image. The link should end in one of =.gif=, =.jpg=, =.bmp=, =.jpeg=, or =.png=. Likes to giphy also result in a posted gif, so long as the links look like =https://giphy.com/gifs/somethingsomething= *** To build a "stand alone" bot - Get posterbot and granolin into a place where quicklisp can find them, as in 1 above. - From a terminal (not from emacs and slime) fire up SBCL, and do the following: #+BEGIN_SRC lisp (ql:quickload :posterbot) (in-package :posterbot) (sb-ext:save-lisp-and-die #p"posterbot" :toplevel #'start-posterbot :executable t :compression t) #+END_SRC - Make a =posterbot.config= file. The following is an example: #+BEGIN_SRC (:ssl nil ;; in the case of a loca testing server, the default is t :hardcopy "posterbot.hardcopy" ;; for recovering sessions, this file will be created :user-id "posterbot" ;; the user you have already created on your server for the bot :password "XXXXXXXX" :homeserver "localhost:8008" ;; or your real one ) #+END_SRC - Then, from the same directory that the config file is in, just do #+BEGIN_SRC bash ./posterbot #+END_SRC