https://github.com/turnage/graw
Golang Reddit API Wrapper
https://github.com/turnage/graw
bot reddit
Last synced: 2 months ago
JSON representation
Golang Reddit API Wrapper
- Host: GitHub
- URL: https://github.com/turnage/graw
- Owner: turnage
- License: mit
- Created: 2015-07-04T22:13:38.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2025-03-21T20:36:09.000Z (about 1 year ago)
- Last Synced: 2025-03-21T21:27:44.330Z (about 1 year ago)
- Topics: bot, reddit
- Language: Go
- Size: 766 KB
- Stars: 290
- Watchers: 8
- Forks: 50
- Open Issues: 21
-
Metadata Files:
- Readme: readme.md
- Contributing: contributing.md
- License: license
Awesome Lists containing this project
README
graw
--------------------------------------------------------------------------------


[](https://godoc.org/github.com/turnage/graw)
go get github.com/turnage/graw
graw is a library for building Reddit bots that takes care of everything you
don't want to. [Read the tutorial book](https://turnage.gitbooks.io/graw/content/)!
As of major version 1, the API promise is: no breaking changes, ever. Details
below. This applies to all (library) subpackages of graw.
### Usage
The design of graw is that your bot is a handler for events, Reddit is a source
of events, and graw connects the two. If you want to announce all the new posts
in a given subreddit, this is your bot:
````go
type announcer struct {}
func (a *announcer) Post(post *reddit.Post) error {
fmt.Printf("%s posted \"%s\"\n", post.Author, post.Title)
return nil
}
````
Give this to graw with an
[api handle from the reddit package](https://godoc.org/github.com/turnage/graw/reddit)
and a tell it what events you want to subscribe to; graw will take care of the
rest. See the [godoc](https://godoc.org/github.com/turnage/graw) and
[tutorial book](https://turnage.gitbooks.io/graw/content/) for more information.
### Features
The primary feature of graw is robust event streams. graw supports many exciting
event streams:
* New posts in subreddits.
* New comments in subreddits.
* New posts or comments by users.
* Private messages sent to the bot.
* Replies to the bot's posts.
* Replies to the bot's comments.
* Mentions of the bot's username.
Processing all of these events is as as simple as implementing a method to
receive them!
graw also provides two lower level packages for developers to tackle other
interactions with Reddit like one-shot scripts and bot actions. See
subdirectories in the godoc.
### API Promise
As of version 1.0.0, the graw API is stable. I will not make any backwards
incompatible changes, ever. The only exceptions are:
* I may add methods to an interface. This will only break you if you embed it
and implement a method with the same name as the one I add.
* I may add fields to the Config struct. This will only break you if you embed
it and add a field with the same name as the one I add, or initialize it
positionally.
I don't foresee anyone having a reason to do either of these things.