{"id":16890316,"url":"https://github.com/jedevc/botrulez","last_synced_at":"2026-02-03T15:07:52.182Z","repository":{"id":69895635,"uuid":"40399175","full_name":"jedevc/botrulez","owner":"jedevc","description":null,"archived":false,"fork":false,"pushed_at":"2018-08-16T16:51:30.000Z","size":10,"stargazers_count":3,"open_issues_count":3,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-10-09T11:09:16.839Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"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/jedevc.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-08-08T10:14:01.000Z","updated_at":"2021-11-21T23:41:17.000Z","dependencies_parsed_at":"2023-02-22T03:00:14.793Z","dependency_job_id":null,"html_url":"https://github.com/jedevc/botrulez","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jedevc/botrulez","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedevc%2Fbotrulez","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedevc%2Fbotrulez/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedevc%2Fbotrulez/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedevc%2Fbotrulez/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jedevc","download_url":"https://codeload.github.com/jedevc/botrulez/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedevc%2Fbotrulez/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29047812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T14:55:20.264Z","status":"ssl_error","status_checked_at":"2026-02-03T14:55:19.725Z","response_time":96,"last_error":"SSL_read: 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":[],"created_at":"2024-10-13T17:02:27.538Z","updated_at":"2026-02-03T15:07:50.011Z","avatar_url":"https://github.com/jedevc.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Botrulez\n\nThese guidelines exist as a standard which bots should obey to be consistent\nwith each other. The goal of a bot is to enhance the experience of the user\nand one of the ways to do so is to provide a unified interface across bots.\nThese standards are all about improving the user experience of bots; if you\nbelieve that breaking some of them would improve the bot, you may go ahead —\nrules are meant to be broken (if you know what you're doing).\n\n***\n\n# Commands\n\nThe user of the bot should be able to predict when the bot will appear. This\nhelps avoid \"spammy\" bots. Therefore, bots should mostly be interacted with\nusing commands. \n\nA command is a statement beinning with a `!`, immediately followed by the\ncommand name, with arguments possibly following. Therefore, a command would\nmatch the regex `/^!(\\S+)(\\s+(\\S+))*\\s*$/`, where the first grouping contains\nthe command name, and the third one the individual arguments.\n\n***\n\n## Standard commands\n\nThis section specifies some commands of use for a large majority of bots.\n\n### !ping\nWhen a `!ping` is sounded, the bot should reply with a `Pong!`. Other replies\nare permitted, however, they should be concise and predictable.\n\nThere are 2 types of ping — *general* and *specific*.\n\nIn a general ping, every bot should reply with its response, whereas in a\nspecific ping, only the bot that is specified in the command should reply.\n\n**General syntax:**\n\n    !ping\n\n**Specific syntax:**\n\n    !ping @BotName\n\n### !help\nWhen a help request is made using `!help`, the bot should resond with a help\ntext detailing the purpose of the bot and how to use it.\n\nAs with pings, there are two variations on the command.\n\nTo a general help request each bot should reply with a concise description of\nthe purpose of the bot. A specific help request reply should contain a more\ndetailed description of the bot and a list of all the commands that a bot\nwill reply to and how to use them.\n\n**General syntax:**\n\n    !help\n\n**Specific syntax:**\n\n    !help @BotName\n\n### !uptime\nWhen an `!uptime` command is given, the bot specified should reply with the\namount of time it has been active and online without crashing and the time\nwhen the bot became active. While the two pieces of information are\nredundant, they are both equally useful for human users.\n\nThe time should be formatted with the most significant time measurement\nappearing first, as [ISO 8601](http://xkcd.com/1179/) specifies.\n\nThe ideal response would look like this — more or less detail may be added\nat wish (although the reply should be still useful) —:\n\n    BotName: /me has been up since 2015-08-08 16:09:50 UTC (2d 3h 4s)\n\n**General syntax:**\n\nDifferently to the other commands, a general reply is not mandated (why would\none want to know all the bots' uptime?); apart from that, the syntax is\nsimilar:\n\n    !uptime\n\n**Specific syntax:**\n\n    !uptime @BotName\n\n***\n\n## Non-standard commands\n\nIn some cases bots may be forced to respond to these commands by the platform,\nor the programmer may wish to implement them as a way to give the end-user\nfurther control over the bot.\n\n### !pause and !restore\nWhen the `!pause` command is issued to a bot, then the bot should cease all\nof its activity but continue to remain in the nick list. When the `!restore`\ncommmand is given to a paused bot, the bot should continue performing its\nduties again; the uptime should be restarted at this point.\n\n**Syntax:**\n\n    !pause @BotName\n\n    !restore @BotName\n\n### !kill\nSometimes, a bot might go out of control and the user may find it neccessary\nto terminate it. When the `!kill` command is given the bot shall cease to\nexist immediately; it shall exit the room and not appear again even if called\nfor.\n\nIf you — as an end-user — find it neccessary to kill a bot that does not\nbelong to you, please explain to the creator of the bot your problems with it\nto enable them to fix it.\n\n**Syntax:**\n\n    !kill @BotName\n\n### !restart\nIf the `!restart` command is given to a bot, the bot should restart all of\nits activities, and appear again. This may be helpful in a bot that is not\nbug free and requires occasional restarts to fix issues. After this command,\nthe uptime should be restarted.\n\n**Syntax:**\n\n    !restart @BotName\n\n### !conjure\nSome bots do perform an idiomatical action under certain conditions (like,\na *@tumbleweed* bot would \"roll by\" if the room is silent for a long time);\nto let the bot perform the action unconditionally, the `!conjure` command\nmay be used.\n\n**Syntax:**\n\n    !conjure @BotName\n\n***\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjedevc%2Fbotrulez","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjedevc%2Fbotrulez","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjedevc%2Fbotrulez/lists"}