{"id":15808840,"url":"https://github.com/martindale/snarl","last_synced_at":"2025-05-08T16:56:36.820Z","repository":{"id":5714574,"uuid":"6925692","full_name":"martindale/snarl","owner":"martindale","description":"Simple, extensible chatbot platform, supports Slack, Discord, and Matrix (with more to come).","archived":false,"fork":false,"pushed_at":"2023-04-15T12:31:13.000Z","size":2013,"stargazers_count":14,"open_issues_count":3,"forks_count":22,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-05-08T16:56:24.217Z","etag":null,"topics":["chatbot"],"latest_commit_sha":null,"homepage":"https://grove.chat","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/martindale.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-11-29T17:42:38.000Z","updated_at":"2023-04-15T09:34:28.000Z","dependencies_parsed_at":"2024-10-26T09:10:44.837Z","dependency_job_id":"7192e742-63ef-4dda-be9c-51b9380afeaf","html_url":"https://github.com/martindale/snarl","commit_stats":{"total_commits":234,"total_committers":14,"mean_commits":"16.714285714285715","dds":0.2777777777777778,"last_synced_commit":"b37383b263fec19558fd93bd718c25be4d192383"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martindale%2Fsnarl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martindale%2Fsnarl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martindale%2Fsnarl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martindale%2Fsnarl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/martindale","download_url":"https://codeload.github.com/martindale/snarl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253112074,"owners_count":21856070,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["chatbot"],"created_at":"2024-10-05T03:07:39.853Z","updated_at":"2025-05-08T16:56:36.796Z","avatar_url":"https://github.com/martindale.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"snarl ![snarl](/snarl-headshot.png)\n===================================\n[![NPM version](\thttps://img.shields.io/npm/v/snarl.svg?style=flat-square)](https://www.npmjs.com/package/snarl)\n[![Build Status](https://img.shields.io/travis/martindale/snarl.svg?branch=master\u0026style=flat-square)](https://travis-ci.org/martindale/snarl)\n\nSnarl is a powerful chatbot built with [Doorman][doorman], [Maki][maki], and\n[the Fabric Protocol][fabric].  Currently, he's running things over in [the\nFabric Chat][fabric-chat], but you can also add him to Slack, Discord, and/or\nMatrix.\n\nDespite his name, snarl is just a fuzzy and friendly goofball.  He's been with\nus for several years, since the beginning of [the Coding\nSoundtrack](https://soundtrack.io) community.  He's an awesome automaton that\nhelps us with a great many things, so be nice to him.\n\nAvatar for snarl is by [@yiyinglu](https://github.com/yiyinglu), who designed\nthe original avatars for tuntable.fm.\n\n## Quick Start\nTo connect with Slack, Discord, or Matrix, you'll need an access token for each\nservice.  Once acquired, add them to `config.json`.\n\n1. Install via `npm install snarl -g`, or simply clone\u003csup\u003e1\u003c/sup\u003e this repository and run `npm install` as usual.\n2. Modify `config.json` to suit your needs (see paragraph above).\n3. Execute `npm start` in the source directory, or `snarl` if you installed globally.\n\nThat's it.  You'll see snarl come online!  If you install snarl globally via\n`npm install snarl -g`, you can also simply type `snarl` at any time (for example,\ninside of a screen or a tmux session) to run the bot.\n\n\u003csmall\u003e1: if you want to make modifications, you should [fork it first][fork]!\u003c/small\u003e\n\n### Naming Your Bot\nIf you want to give snarl a different name, you can configure it via Slack (see\nlink above), or add a `name` property to `config.json`.\n\n## Plugins\nSnarl comes pre-configured with several convenient plugins, but more can be\nenabled by adding them to the `plugins` list in `config.json`.\n\n### Included Plugins\nThe list of available plugins (via `./plugins/plugin-name`) is as follows:\n\n- `welcome`, which provides a welcome message to users joining specified channels.\n- `erm`, which transforms the text of a user message into `ERMEGERD` speech using [martindale/erm](https://github.com/martindale/erm).\n\n### Other Plugins\n- [snarl-eliza](https://github.com/martindale/snarl-eliza) is a simple AI using\nthe ELIZA self-help chatbot created by Joseph Weizenbaum between 1964 and 1966.\n- [snarl-wine-lookup](https://github.com/naterchrdsn/snarl-wine-lookup) is a simple plugin for performing wine-lookups via the [snooth wine api](http://api.snooth.com/), using the !vino command and several optional parameters. Cheers!\n\n### Writing Plugins\nTo write a snarl plugin, create a new NPM module that exports a map of triggers\nyour bot will respond to.  You can use either a simple message string, or a\nfunction that expects a callback:\n\n### Deprecated Plugins\nSnarl has a long history, and we'd like to keep him up to date — so we've\ndeprecated the following plugins as to focus on core functionality.\n\n- `karma`, which keeps track of user karma, as incremented by `@username++`.\n- `facts`, which provides `!TopologyFacts` (mathematical topology facts), `!SmiffFacts` (facts about Will Smith), and `!InterstellaFacts` (facts about [Interstella 5555](https://en.wikipedia.org/wiki/Interstella_5555:_The_5tory_of_the_5ecret_5tar_5ystem))\n- `meetups`, which responds with a simple message telling your community about in-person meetups.\n- `beer-lookup`, which provides `!brew \u003cbeerName\u003e` to look up and describe a beer via [BreweryDB](http://www.brewerydb.com/).\n\nFeel free to submit a pull request if you'd like to make an improvement!\n\n[doorman]: https://github.com/FabricLabs/doorman\n[writing-doorman-plugins]: https://github.com/FabricLabs/doorman#plugins\n[fabric]: https://fabric.pub\n[fabric-chat]: https://chat.fabric.pub\n[maki]: https://maki.io\n[slack-bots]: https://api.slack.com/bot-users\n[fork]: https://github.com/martindale/snarl/fork\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartindale%2Fsnarl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmartindale%2Fsnarl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartindale%2Fsnarl/lists"}