exp is a simple sticker-only integration manager for riot.im.
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.
Max Reitz 73916c365d Fix Content-Length 2 months ago
html Fix sticker picker 8 months ago
.gitignore Move stickers.json to stickers.example.json 10 months ago
README.md README adjustments 9 months ago
exp.rb Fix things for CORS 2 months ago
generate-sticker.rb (That’s a bit embarrassing.) 10 months ago
http.rb Fix Content-Length 2 months ago
riot-routes.rb Allow enabling/disabling of the picker 10 months ago
scalar-routes.rb Split route handling into own files 10 months ago
stickers.example.json Add another example sticker 10 months ago
widget-routes.rb Split route handling into own files 10 months ago



The intention behind this was for the server to be set up easily, so this is what you have to do:

(Note that this will break all of your existing integrations. If you don’t even know what integrations are and just want stickers, that’s probably OK.)

  1. Install prerequistes (should be just ruby).
  2. Write stickers.json as you like (see stickers.example.json for how it works; generate-sticker.rb may help you to speed up the process)
  3. Launch exp.rb with listen host and port, e.g. like so:

    $ screen -m -d ./exp.rb localhost 8184

    (Feel free to make another HTTP server on your server act as a proxy so you get e.g. SSL support)

  4. Make the following modifications to your local /etc/riot/config.json:

    "integrations_ui_url": "$HOST/riot",
    "integrations_rest_url": "$HOST/api/v1/scalar",
    "integrations_widgets_urls": [

    Replace $HOST by the base URL of your server, e.g. http://localhost:8184.

  5. Restart Riot, and keep restarting it (wait for about a minute between starting and quitting) until the integrations icon no longer has a red warning sign on it.

  6. Click on the integrations icon and enable the exp sticker picker. Wait for a couple of seconds, and then the sticker picker should work.

Whenever you modify stickers.json, you need to restart both exp.rb and Riot.

TODO list

  • Figure out sticker sending
  • Auto-close picker when sticker is sent
  • Load stickers from “DB” (JSON info suffices)
  • Store user session info in DB
  • Interface for choosing which sticker packs to enable
  • Ability to add sticker packs through Riot
  • Ability to modify sticker packs through Riot
  • Put HTML and stuff into template files
  • Allow installation of the sticker picker into m.widgets