This repository has been archived on 2022-03-09. You can view files and clone it, but cannot push or open issues or pull requests.
snoo2nebby/vendor/github.com/turnage/graw/graw.go

46 lines
1.9 KiB
Go

// Package graw is a high level, easy to use, Reddit bot library.
//
// graw will take a low level handle from the graw/reddit package and manage
// everything for you. You just specify in a config what events you want to
// listen to on Reddit, and graw will take care of maintaining the event stream
// and calling the handler methods of your bot whenever new events occur.
//
// Announcing new posts in /r/self is as simple as:
//
// type announcer struct{}
//
// func (a *announcer) Post(post *reddit.Post) error {
// fmt.Printf(`%s posted "%s"\n`, post.Author, post.Title)
// return nil
// }
//
// .....
//
// // Get an api handle to reddit for a logged out (script) program,
// // which forwards this user agent on all requests and issues a request at
// // most every 5 seconds.
// apiHandle := reddit.NewScript("your user agent", 5 * time.Second)
//
// // Create a configuration specifying what event sources on Reddit graw
// // should connect to the bot.
// cfg := graw.Config{Subreddits: []string{"self"}}
//
// // launch a graw scan in a goroutine using the bot, handle, and config. The
// // returned "stop" and "wait" are functions. "stop" will stop the graw run
// // at any time, and "wait" will block until it finishes.
// stop, wait, err := graw.Scan(&announcer{}, apiHandle, cfg)
//
// // This time, let's block so the bot will announce (ideally) forever.
// if err := wait(); err != nil {
// fmt.Printf("graw run encountered an error: %v\n", err)
// }
//
// graw can handle many event sources on Reddit; see the Config struct for the
// complete set of offerings.
//
// graw has one other function that behaves like Scan(), which is Run(). Scan()
// is for logged-out bots (what Reddit calls "scripts"). Run() handles logged in
// bots, which can subscribe to logged-in event sources in the bot's account
// inbox like mentions and private messages.
package graw