{"id":13701935,"url":"https://github.com/InfinityBotList/grevolt","last_synced_at":"2025-05-05T04:30:42.368Z","repository":{"id":176375486,"uuid":"656862779","full_name":"InfinityBotList/grevolt","owner":"InfinityBotList","description":null,"archived":false,"fork":false,"pushed_at":"2024-01-12T13:24:59.000Z","size":46297,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-17T11:31:42.438Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/InfinityBotList.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}},"created_at":"2023-06-21T19:53:23.000Z","updated_at":"2024-04-23T12:31:23.000Z","dependencies_parsed_at":"2024-01-12T18:25:52.873Z","dependency_job_id":null,"html_url":"https://github.com/InfinityBotList/grevolt","commit_stats":null,"previous_names":["infinitybotlist/grevolt"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InfinityBotList%2Fgrevolt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InfinityBotList%2Fgrevolt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InfinityBotList%2Fgrevolt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InfinityBotList%2Fgrevolt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/InfinityBotList","download_url":"https://codeload.github.com/InfinityBotList/grevolt/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252439365,"owners_count":21747993,"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-08-02T21:00:27.894Z","updated_at":"2025-05-05T04:30:38.031Z","avatar_url":"https://github.com/InfinityBotList.png","language":"Go","funding_links":[],"categories":["💻 API Libraries"],"sub_categories":["Go"],"readme":"# Grevolt\n\nA low-level library for Revolt focused on being up-to-date and feature-complete with Revolts current API while also being well tested with unit tests and providing a high level of control over all parts of the library to allow both small and large bots to thrive.\n\nGrevolt seperates low-level ``Client`` operations from more higher level abstractions by providing ``extra``, a collection of additional utilities for common tasks such as more complex event handling, command handling (TODO) and more!\n\n## Why grevolt?\n\nOther libraries had many flaws when inspected. Not to blame these projects, but here are some of the issues I found.\n\n- [Panicking on unsuccessful json marshalling](https://github.com/ben-forster/revolt/blob/main/websocket.go#L38)\n\nRevolt goes down a *lot* and in the future may even spew out invalid JSON as it grows, and panicking here is simply infeasible for larger bots. Grevolt instead returns an error and allows the user to handle it for example by restarting the bot or logging the error in a database for example. In addition to this, these libraries often don't `Ping` the 'official client' way (`data` is supposed to be a timestamp and [not a constant](https://github.com/sentinelb51/revoltgo/blob/main/websocket.go#L115))\n\n- Poor concurrency, such as [blocking calls](https://github.com/ben-forster/revolt/blob/main/websocket.go#L46) and generally lower quality code (including [hardcoded JSONs](https://github.com/ben-forster/revolt/blob/main/websocket.go#L59C3-L59C3) in some libraries such as [this library](https://github.com/ben-forster/revolt).)\n\n## Testing\n\nRun ``go test -v ./...`` to test stuff\n\n## TODO\n\n- Better usage examples\n- Command handling framework\n\n## Credits\n\n- https://github.com/sentinelb51/revoltgo for some models (embeds), utilities (merge), and inspirations (permissions; they're beautiful, aren't they?)\n\n**Heavy work in progress**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FInfinityBotList%2Fgrevolt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FInfinityBotList%2Fgrevolt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FInfinityBotList%2Fgrevolt/lists"}