discordcr
Version, currently 0.1.12 versions
- 0.1.1latestSep 30, 2016
- 0.1.0not indexedMay 9, 2021
github.com/greenbigfrog/discordcr
Minimalist Discord library for Crystal. (Still WIP, but usable)
Installation
# Add this to your shard.yml
dependencies:
discordcr:
github: greenbigfrog/discordcr
version: ~> 0.1.1Then run:
shards installshard.yml
- Crystal
- no constraint declared
- License
- MIT
- Author
- meew0
Dependencies
This version declares no dependencies.
README
discordcr
(The "cr" stands for "creative name".)
discordcr is a minimalist Discord API library for Crystal, designed to be a complement to discordrb for users who want more control and performance and who care less about ease-of-use.
discordcr isn't designed for beginners to the Discord API - while experience with making bots isn't required, it's certainly recommended. If you feel overwhelmed by the complex documentation, try discordrb first and then check back.
Unlike many other libs which handle a lot of stuff, like caching or resolving, themselves automatically, discordcr requires the user to do such things manually. It also doesn't provide any sort of abstractions for REST calls, the user has full control over them, but also full responsibility. discordcr does not support user accounts; it may work but likely doesn't.
Installation
Add this to your application's shard.yml:
dependencies:
discordcr:
github: meew0/discordcr
Usage
An example bot can be found here. More examples will come in the future.
A short overview of library structure: the Client class includes the REST
module, which handles the REST parts of Discord's API; the Client itself
handles the gateway, i. e. the interactive parts such as receiving messages. It
is possible to use only the REST parts by never calling the #run method on a
Client, which is what does the actual gateway connection.
The example linked above has an example of an event (on_message_create) that
is called through the gateway, and of a REST call (client.create_message).
Other gateway events and REST calls work much in the same way - see the
documentation for what specific events and REST calls do.
Caching is done using a separate Cache class that needs to be added into
clients manually:
client = Discord::Client.new # ...
cache = Discord::Cache.new(client)
client.cache = cache
Resolution requests for objects can now be done on the cache object instead of
directly over REST, this ensures that if an object is needed more than once
there will still only be one request to Discord. (There may even be no request
at all, if the requested data has already been obtained over the gateway.)
An example of how to use the cache once it has been instantiated:
# Get the username of the user with ID 66237334693085184
user = cache.resolve_user(66237334693085184_u64)
user = cache.resolve_user(66237334693085184_u64) # won't do a request to Discord
puts user.username
Apart from this, API documentation is also available, at https://meew0.github.io/discordcr/doc/v0.1.0/.
Contributing
- Fork it (https://github.com/meew0/discordcr/fork)
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
Contributors
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
0.1.1- Tagged
- Sep 30, 2016
- Commit
d73fd09af28c- Indexed
- yes
Dependents
No indexed shard depends on this one yet.
Repository
github.com/greenbigfrog/discordcr
Metadata
- Created
- Aug 16, 2026
- Updated
- Aug 16, 2026
- Synced
- Aug 16, 2026
- Versions
- 2