a matrix bot written in elisp, unmaintained and underdeveloped.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Ryan Rix 941b0aa867 Make sico work with the new matrix-api 4 years ago
LICENSE Add LICENSE 4 years ago
README.org F1rst post 4 years ago
sico.el Make sico work with the new matrix-api 4 years ago


Sico: Rockie's Robot Butler


sico will soon be installable via MELPA. Otherwise you can add this directory to your load-path and (require 'sico).


Basic Usage

  • src_emacs-lisp[:exports code]{(customize-group 'sico)}

    • At the bare minimum, customize sico-rooms and sico-users

  • You may also want to customize matrix-homeserver-base-url

  • M-x sico-start will connect Sico to the Matrix homeserver and begin polling for events


Customizing the Note Taker

The note taker is a simple wrapper around org-capture, which gives you a nice simple wedge with which to get your way in to an org-mode document

Begin by defining a capture-template:

(add-to-list 'org-capture-templates
               "Automatic note taking using Sico"
               (file org-default-notes-file)
               "* %c :NOTE:NOEXPORT:"
               :immediate-finish t))

The important bits here are:

  • The usage of %c, which will be expanded to the head of the kill-ring. Sico stores the note in there as an easy way to push it in to Org-Mode.

  • The usage of :immediate-finish t, since Sico is not helping you do interactive things over Matrix, you need to make sure the Capture dialog doesn't stay open.

Do read the Org-Mode documentation on Capture Tepmlates ((info "org#Capture templates") inside of Emacs), as it is quite helpful.

New Listeners

Creating new listeners is fairly trivial. Create a function which takes a single argument, which is the sexp representation of a Matrix.org room event. It can do whatever you want it to do with that event, for a minimal example, see the source for sico-capture-note.

Once you have your function defined, add a cons to the alist sico-listeners where the car is the regexp that will match the event, and the cdr is the symbol for the function you've just defined.


To submit patches:

  • Clone the repo

  • Create a git branch, code in a branch.

  • When you're done, send me a git format-patch style patch

    • git format-patch --to ryan@whatthefuck.computer master..HEAD > YOURBRANCHNAME.patch

    • Mail that patch to me at ryan@whatthefuck.computer, and I will integrate it.

      • Or send it to me on Matrix, I'm @rrix:whatthefuck.computer

Project Discussion happens in #ft_kickass:whatthefuck.computer


See LICENSE in the root of the repository for legal information.