{"id":24441662,"url":"https://github.com/jvrsantacruz/rchat","last_synced_at":"2025-10-08T13:14:19.397Z","repository":{"id":54998990,"uuid":"262603433","full_name":"jvrsantacruz/rchat","owner":"jvrsantacruz","description":"Simplistic RocketChat command line client","archived":false,"fork":false,"pushed_at":"2024-07-06T01:31:08.000Z","size":201,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-21T18:44:38.151Z","etag":null,"topics":["command-line","python","python3","rocketchat","rocketchat-api","rocketchat-cli"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jvrsantacruz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2020-05-09T15:42:57.000Z","updated_at":"2024-02-04T10:09:05.000Z","dependencies_parsed_at":"2024-03-05T16:51:28.808Z","dependency_job_id":"4505643d-3523-42f7-8250-39231bc1aadf","html_url":"https://github.com/jvrsantacruz/rchat","commit_stats":{"total_commits":38,"total_committers":2,"mean_commits":19.0,"dds":0.2894736842105263,"last_synced_commit":"6b5468c19a865a6ac627c5c2224ecb1c1c818c88"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/jvrsantacruz/rchat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvrsantacruz%2Frchat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvrsantacruz%2Frchat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvrsantacruz%2Frchat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvrsantacruz%2Frchat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jvrsantacruz","download_url":"https://codeload.github.com/jvrsantacruz/rchat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvrsantacruz%2Frchat/sbom","scorecard":{"id":544927,"data":{"date":"2025-08-11","repo":{"name":"github.com/jvrsantacruz/rchat","commit":"6b92fc17fcd43e401a9da87bd614af2d8c5fc1a9"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.3,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/jvrsantacruz/rchat/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/jvrsantacruz/rchat/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/jvrsantacruz/rchat/build.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:25","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:26","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 0.3.0 not signed: https://api.github.com/repos/jvrsantacruz/rchat/releases/38373251","Warn: release artifact 0.2.2 not signed: https://api.github.com/repos/jvrsantacruz/rchat/releases/36820812","Warn: release artifact 0.2 not signed: https://api.github.com/repos/jvrsantacruz/rchat/releases/36625506","Warn: release artifact 0.3.0 does not have provenance: https://api.github.com/repos/jvrsantacruz/rchat/releases/38373251","Warn: release artifact 0.2.2 does not have provenance: https://api.github.com/repos/jvrsantacruz/rchat/releases/36820812","Warn: release artifact 0.2 does not have provenance: https://api.github.com/repos/jvrsantacruz/rchat/releases/36625506"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"10 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2022-43017 / GHSA-qwmp-2cf2-g9g6","Warn: Project is vulnerable to: PYSEC-2024-230 / GHSA-248v-346w-9cwc","Warn: Project is vulnerable to: PYSEC-2024-60 / GHSA-jjg7-2v4v-x38h","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2025-49 / GHSA-5rjg-fvgr-3xxf","Warn: Project is vulnerable to: GHSA-cx63-2mw6-8hw5","Warn: Project is vulnerable to: GHSA-34jh-p97f-mpxf","Warn: Project is vulnerable to: GHSA-48p4-8xcf-vxj5","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T09:14:45.552Z","repository_id":54998990,"created_at":"2025-08-20T09:14:45.552Z","updated_at":"2025-08-20T09:14:45.552Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278948903,"owners_count":26073933,"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","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["command-line","python","python3","rocketchat","rocketchat-api","rocketchat-cli"],"created_at":"2025-01-20T21:18:45.973Z","updated_at":"2025-10-08T13:14:19.336Z","avatar_url":"https://github.com/jvrsantacruz.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rchat\n![build](https://github.com/jvrsantacruz/rchat/workflows/build/badge.svg)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n\nA simple RocketChat command line client\n\n    rchat send --to #team \"Hello World!\"\n\n## Usage\n\n_rchat_ comes with a command line interface that allows you to send messages\neither to groups or direct people:\n\n    rchat send --to @rita.cantaora \"Hi Rita!\"\n\nThe message can also be piped into the program via stdin:\n\n    echo \"Hi!\" | rchat send --to #team\n\nFor the common case of sending a verbatim text, a `--code` flag can be passed\nso the message is formatted as markdown code block:\n\n    cat script.py | rchat send --to @helper --code --lang python\n\nSee help for more information:\n\nSee `rchat --help`.\n\n## Configuration\n\n_rchat_ needs to know at least the server url and user credentials to use the\nAPI. Those parameters can be given via _command line option_, set using an\n_envvar_ or by setting them in a _config file_.\n\nSee [how to create your token](#create-token) and get the user id.\n\n### Config file\n\nTo configure via file, place your parameters in [toml][] format at\n`~/.config/rchat/config.toml`:\n\n```toml\n[rchat]\nuser_id = 'a1d3f4dd..'\ntoken = 'fjXkkf..'\nurl = 'https://rocketchat.myserver.net'\n```\n\nExtra config files can be placed in the `conf.d` directory and all of them will\nbe merged together using [confight](https://github.com/avature/confight). Last\nvalues found in these files will override the previous ones, so the complete\nlist of places to be searched, in the order that will be read are:\n\n- `/etc/rchat/config.toml`\n- `/etc/rchat/conf.d/*`\n- `~/.config/rchat/config.toml`\n- `~/.config/rchat/conf.d`\n\nMeaning that the keys in files placed at `~/.config/rchat/conf.d` will override\nthe rest.\n\nA specific config file can be given by passing the `--config` option or setting\nthe `RCHAT_CONFIG` envvar.\n\n#### Aliases\n\nUse shorter names for certain contacts by declaring them in the config file:\n\n    [rchat.aliases]\n    \"my-alias\" = \"@full-long-name\"\n\nThe string \"my-alias\" will then be expanded to \"@full-long-name\" before a\nmessage is sent:\n\n    rchat send --to my-alias \"Hi!\"\n\n### Environment Variable\n\nSettings can also be set as a environment variable by prefixing them with\n`RCHAT_` such as in `RCHAT_USER_ID`. Arguments set this way will take\nprecedence over the ones in the config file but will be overriden by the ones\nin command line.\n\n### Command line\n\nBase configuration options can be taken from the command line.\nArguments given in the command line will override any other configuration.\n\n    --user TEXT      Username in RocketChat\n    --user-id TEXT   User id associated to a Token\n    --token TEXT     Personal Acces Token Name\n    --password TEXT  Password for user in RocketChat\n    --url TEXT       Url to the RocketChat server\n\nThis can come handing sometimes but is not recommended to pass tokens in the\ncommand line, they're stored in bash history or can be seen as part of the\nprocess information.\n\n[toml]: https://github.com/toml-lang/toml\n\n## Create Token\n\nYou'll need a `user_id` and `token` pair to make rchat work with your RocketChat instance.\n\nThe steps are:\n\n1. Go to `Profile -\u003e My Account -\u003e Security -\u003e Personal Access Tokens`\n2. Create a new token\n3. Copy the User Id and Token (you won't be able to see them later).\n\nCheck out the [RocketChat\ndocumentation](https://docs.rocket.chat/api/rest-api/personal-access-tokens) on\nhow to get a token for more info.\n\n![Go to My Account](./img/how-to-get-to-my-account.png)\n![Create a new Token](./img/how-to-get-a-token.png)\n![Copy the id and token](./img/how-to-get-the-id-and-token.png)\n\n## Development\n\nFrom the root of the application directory, create a python environment,\ninstall the application in development mode along with its dependencies and\nrun it locally:\n\n    pip install poetry\n    poetry shell\n    poetry install\n\nTests can be run using *tox* (recommended):\n\n    pip install tox\n    tox\n\nOr directly by calling *py.test*:\n\n    python -m pytest\n\n## TODO\n\n- [X] Send private messages\n- [X] Send message from stdin\n- [X] Send message from files\n- [ ] Upload files\n- [ ] Upload images\n- [ ] Read messages\n- [ ] Listen to new messages\n- [ ] Autocomplete emojis\n- [ ] Autocomplete users\n- [ ] Autocomplete channels\n- [X] Config file\n- [ ] Logging and debug\n- [X] Debian Packaging\n- [ ] Bundled Packaging\n- [X] Pypi version\n- [X] Versioning script\n- [ ] Improve startup time\n- [ ] Define groups of users\n- [X] User aliases\n- [ ] Allow to get reactions\n- [ ] Allow for threads\n- [ ] Implement (pre|post) message hooks\n- [ ] Implement (pre|post) reaction hooks\n- [ ] Autocomplete names\n- [ ] Autocomplete channels\n- [ ] Open editor to compose message\n- [ ] Preview message in markdown viewer\n- [ ] Autoformat input as verbatim\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjvrsantacruz%2Frchat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjvrsantacruz%2Frchat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjvrsantacruz%2Frchat/lists"}