{"id":47685497,"url":"https://github.com/kayex/sirius","last_synced_at":"2026-04-02T14:48:31.050Z","repository":{"id":57523076,"uuid":"72487590","full_name":"kayex/sirius","owner":"kayex","description":"An extension server for Slack ⚡","archived":false,"fork":false,"pushed_at":"2018-10-05T00:36:39.000Z","size":470,"stargazers_count":1,"open_issues_count":10,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-20T16:45:13.781Z","etag":null,"topics":["go","slack"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kayex.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-10-31T23:47:58.000Z","updated_at":"2022-11-29T00:42:33.000Z","dependencies_parsed_at":"2022-08-28T11:20:42.567Z","dependency_job_id":null,"html_url":"https://github.com/kayex/sirius","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/kayex/sirius","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kayex%2Fsirius","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kayex%2Fsirius/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kayex%2Fsirius/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kayex%2Fsirius/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kayex","download_url":"https://codeload.github.com/kayex/sirius/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kayex%2Fsirius/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31308443,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","slack"],"created_at":"2026-04-02T14:48:30.436Z","updated_at":"2026-04-02T14:48:31.042Z","avatar_url":"https://github.com/kayex.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sirius ⚡\n![](https://travis-ci.org/kayex/sirius.svg?branch=develop)\n\nAn extension server for Slack.\n\nExtensions are small pieces of user-created functionality that enhance the default Slack experience. For example, the `thumbs_up` extension converts `(y)` to `👍` in all outgoing messages.\n\nSirius is an extension server that allows you to run these extensions as a standalone service, and use them without having to install anything on the devices you use Slack from.\n\n## How does it work?\nSirius connects to the [Slack Real Time Messaging API](https://api.slack.com/rtm) using your Slack OAuth credentials. Once logged in, it monitors your active channels for messages you send, and processes them using the enabled extensions. Modifications to the message body are instantly propagated using a regular message edit.\n\nSirius does not store or forward any message data, including metadata.\n\n## Bundled extensions\nThese extensions come included with sirius by default, and can be enabled immediately using their EIDs (names).\n\n### thumbs_up\nConverts `(y)` to `👍` in all outgoing messages.\n\n\u003e**kayex**: Awesome (y)\n\n⚡\n\n\u003e**kayex**: Awesome 👍\n\n--\n\n### geocode\nType `!address` followed by any sort of geographical location, and the `geocode` extension will show the exact address and coordinates.\n\n\u003e**kayex**: !address Empire State Building\n\n⚡\n\n\u003e**kayex**: **350 5th Ave, New York, NY 10118, USA**  \n`(40.748441, -73.985664)`\n\n--\n\n### ip_lookup\nType `!ip` followed by an IP address to show related geolocation information.\n\n\u003e**kayex**: !ip 8.8.8.8  \n\u003e**kayex**: !ip 2001:4860:4860::8888 // IPv6\n\n⚡\n\n\u003e**kayex**: `8.8.8.8`  \nMountain View, United States (`US`)  \nGoogle  \n\u003e**kayex**: `2001:4860:4860::8888`  \nChicago, United States (`US`)  \nGoogle\n\n--\n\n### quotes\nAvoids breaking blockquotes that contain newlines.\n\n\u003e**kayex**: \u003eThis is  \n           a multi-line  \n\t   quote.\n\n⚡\n\n\u003e**kayex**: \u003eThis is  \n           \u003ea multi-line  \n\t   \u003equote.\n\n--\n\n### Censor\nHelps you avoid using inappropriate language.\n\n\u003e**kayex:** I messed up. Fuck.\n\n⚡\n\n\u003e**kayex:** I messed up. `CENSORED`\n\n--\n\n## Getting started\nSirius is available as a free, hosted service at http://adsa.se/sirius.\n\nYou can also run Sirius yourself by following the instructions below.\n\n### Building\n```\n$ go build github.com/kayex/sirius/cmd/sirius-local\n```\n\n### Running\nBefore starting the service, a `users.json` file needs to be created in the same directory as the executable will run from. The file should consist of a single JSON array containing OAuth tokens for the Slack accounts that Sirius should be enabled for:\n\n**users.json**\n```json\n[\n\t\"xoxp-234234234-23234234-234234324234234-2342343242433\"\n]\n```\n\nYou can then start the main service by simply running the `sirius-local` executable:\n```\n$ ./sirius-local\n```\n\n## Can I request a new extension?\nOf course! Just [submit a new issue](https://github.com/kayex/sirius/issues/new) and make sure to tag it with the `extension` label. You can also submit your own extension by creating a pull request.\n\n## Creating a new extension\nCreating a new extension is only a matter of implementing the `Extension` interface:\n```go\npackage sirius\n\ntype Extension interface {\n\tRun(Message, ExtensionConfig) (MessageAction, error)\n}\n```\n\nThe `Run` function is called with every outgoing message captured via the RTM API, and should return either an `error` or a `MessageAction`. Each extension is passed an `ExtensionConfig` with every invocation, which is a read-only key/value configuration store. The `ExtensionConfig` is unique per user and extension, and is used to access all extension-specific configuration values.\n\n`MessageAction`s are returned by extensions to describe changes that should be made to the processed message. This includes things such as editing the message text or deleting the message entirely. Actions are accumulated by the extension runner and broadcasted via the RTM API in timed batches.\n\nExtensions that do not need to modify the message in any way can simply `return NoAction(), nil`.\n\nAn extension has exactly **2000 ms** to finish execution if it wishes to provide a `MessageAction` (other than `NoAction()`). Extensions executing past this deadline will be allowed to finish, but any message actions returned will be discarded.\n\n### `MessageAction`s\nThese are the default `MessageActions`. New actions can be created by implementing the `MessageAction` interface:\n```go\ntype MessageAction interface {\n\tPerform(*Message) error\n}\n```\n\n#### TextEditAction\nModifications to the message text are easily done using `(*Message) EditText()`:\n```go\nfunc (*ThumbsUp) Run(m Message, cfg ExtensionConfig) (MessageAction, error) {\n\tedit := m.EditText()\n\t\n\tedit.Substitute(\"(y)\", \":+1:\")\n\tedit.Substitute(\"(Y)\", \":+1:\")\n\n\treturn edit, nil\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkayex%2Fsirius","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkayex%2Fsirius","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkayex%2Fsirius/lists"}