{"id":17059123,"url":"https://github.com/toxicfrog/sharkbot","last_synced_at":"2025-03-23T07:25:20.901Z","repository":{"id":28100202,"uuid":"31598449","full_name":"ToxicFrog/sharkbot","owner":"ToxicFrog","description":"A small IRC bot for the Gentlemen Bastards fandom.","archived":false,"fork":false,"pushed_at":"2016-01-23T00:51:35.000Z","size":503,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-28T14:16:05.706Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Clojure","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/ToxicFrog.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":"2015-03-03T12:58:23.000Z","updated_at":"2016-01-23T00:51:36.000Z","dependencies_parsed_at":"2022-09-13T19:11:23.796Z","dependency_job_id":null,"html_url":"https://github.com/ToxicFrog/sharkbot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ToxicFrog%2Fsharkbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ToxicFrog%2Fsharkbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ToxicFrog%2Fsharkbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ToxicFrog%2Fsharkbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ToxicFrog","download_url":"https://codeload.github.com/ToxicFrog/sharkbot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245068672,"owners_count":20555801,"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":[],"created_at":"2024-10-14T10:32:42.673Z","updated_at":"2025-03-23T07:25:20.878Z","avatar_url":"https://github.com/ToxicFrog.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sharkbot\n\nA simple IRC bot for #gbchat, the Gentleman Bastards fan channel. Remembers pronouns and spoiler levels and eats people.\n\n![kickin' rad shark portrait](https://raw.githubusercontent.com/ToxicFrog/sharkbot/master/sharky.png)\n\n(Thanks to [Korbinnian Rittinger](http://korvidian.tumblr.com) for the drawing.)\n\n## Installation\n\nNone needed, just download and run. State is stored in `sharky.edn` in PWD by default.\n\n## Startup\n\n    lein run --\n        [--server irc.freenode.net]\n        [--port 6667]\n        [--join #gbchat]\n        [--nick SharkyMcJaws,sharky]\n        [--persistence ./sharky.edn]\n        [--admin Alice,Bob]\n        [--modules amusements,userinfo,spoilers,memory]\n\nSupported options with example values are shown. There is also a `--help` option that displays a brief help text.\n\nThere is currently no support for joining multiple channels. You can do it by comma-separating the argument to `--join`, but the bot will misbehave badly if you do.\n\n    --server SERVER\n    --port PORT\n    --join CHANNEL\n\nSpecifies the server and port to connect to and the channel to join.\n\n    --nick FOO,BAR,...\n\nComma-separated list of names. The first one will be used as the bot's IRC name (and it will error if it can't claim that name). The other names are alternate names it will respond to when addressed using them in channel.\n\n    --persistence FILE\n\nPath to the persistence file to store user info and memories in.\n\n    --admin NAME,NAME,...\n\nComma-separated list of names to act as administrators. At the moment all this does is give those people the ability to use the hot-reload command to reload specific modules. It may do more in the future.\n\n    --modules MODULE,MODULE,...\n\nList of modules (from `src/sharkbot/modules`) to load at startup, or when told to hot-reload by a non-admin user. The default is to load all modules.\n\n## Usage\n\nThe bot responds to various one-word commands, which can be delivered by !-prefixing them (`!eat Person`) or by prefixing them with the name of the bot (`SharkyMcJaws, eat Person`). It also responds to some emotes (/me commands) that are not specifically directed at it.\n\nIt supports the following commands:\n\n    !teeth \u003cperson\u003e\n    !eat \u003cperson\u003e\n    /me feeds \u003cperson\u003e to the shark\n    /me sends \u003cperson\u003e for teeth lessons\n\nSend someone for teeth lessons.\n\n    !set key value [key value ...]\n    !unset key [key ...]\n\nSet or clear user-specific info, as in `!set name Ben pronouns m spoilers RoT country Canada tz EST`, or `!unset name`. This can't be used to set aliases; see `!alias` and `!unalias` for that.\n\nThe bot will understand `pronouns` (which should be `t`, `f`, or `m`), `name`, and `spoilers`; other fields are recorded purely for informational purposes.\n\n    !info \u003cperson\u003e\n    SharkyMcJaws, tell me about \u003cperson\u003e\n\nDisplay info someone previously recorded with `!set`.\n\n    !alias name [name ...]\n    !unalias name [name ...]\n\nRecord aliases. When asked about these aliases the bot will respond as though asked about you, assuming that they are unambiguous. If multiple people use the same alias, it will ask for clarification.\n\n    !remember key text...\n    !remember key\n    !remember\n    !forget key\n\nRemember or forget `text` as associated with `key`. Without `text`, display the previously remembered text. With no `key`, list the keys of all the bot's memories.\n\n    !spoilers\n    SharkyMcJaws, check the spoiler level\n    SharkyMcJaws, what's the spoiler level?\n\nCheck the spoiler level. This is normally handled automatically based on what users have set as their `spoiler` info (it recognizes `LoLL` for Lies, `RSURS` for Seas, and `RoT` for Republic), but if you want to double check you can use this command.\n\n    !newbie \u003cperson\u003e\n    SharkyMcJaws, there's a newbie\n    SharkyMcJaws, \u003cperson\u003e is a newbie\n\nProvides a link to the newbie guide, optionally directed at a specific person.\n\n    !hot-reload\n    !hot-reload \u003cmodules\u003e\n\nReload modules without restarting the bot.\n\nWhen used without arguments, or by non-admins, reload all feature modules specified on the command line. When passed arguments by an admin, reload exactly those modules; these should be Clojure module paths without the leading `sharkbot.` prefix, so `!hot-reload triggers modules.memory` to reload the main triggers library and the memory feature module.\n\nNote for admins: reloading `triggers` will reset the trigger table, disabling all features. It's recommended to do an unqualified `hot-reload` afterwards to reload the feature modules as well.\n\n## Roadmap\n\n- proper logging\n- random text for !eat, see suggestions\n  \u003cAriaste\u003e \"Sharky nibbles (thing) inquisitively, then spits it out. He gives you a disgusted look and swims away.\"\n  \u003cbooty\u003e Sharky eats [instert thing] and gets indigestion. You gave sharky tummy. You should feel bad about your life and choices\n  \u003cAriaste\u003e Sharky chomps (thing) enthusiastically.\n  \u003cbooty\u003e Sharky plays with his food. Good sharky.\n  \u003csemirose\u003e SharkyMcJaws swims alongside brother/sister of the lady of the long silence\n- multichannel support\n- support regexes in (command) triggers for e.g. (command #\"spoilers\\?*\")\n\u003cAriaste\u003e when I say \"vet\" i want Sharky to look alarmed and hide under the couch\n\n## License\n\nCopyright © 2015 Ben 'ToxicFrog' Kelly\nSharkyMcJaws drawing © 2015 Korbinnian Rittinger\n\nReleased under the MIT license; see the LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoxicfrog%2Fsharkbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftoxicfrog%2Fsharkbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoxicfrog%2Fsharkbot/lists"}