Welcome to the snoots documentation!
Helpful links:
To get started making a bot with snoots:
- Create an application
- Come up with a user agent. See here for more info.
- Create a new Client instance.
const client = new Client({ userAgent: "<the user agent>", creds: { clientId: "<the client id>", clientSecret: "<the client secret>", }, auth: { username: "<the reddit account username>", password: "<the reddit account password>", }, });
- Use the api! If you need some help, check out the examples.
If you just want to retrieve information from the Reddit api without controlling a user account you can do that!
- Create an application1
- Come up with a user agent. See here for more info
- Create a new Client instance.
const client = new Client({ userAgent: "<the user agent>", creds: { clientId: "<the client id>", clientSecret: "<the client secret>", }, });
- Use the api! If you need some help, check out the examples.
1 If you really don't want to make an application you can skip this
step and leave off the creds
parameter, but note that performing requests
without an application means you have a much lower ratelimit.
Print a comment tree to stdout.
async function printTree(cmt: Comment, indent: string = "") {
const body = cmt.body.replace(/\n/g, "\n" + indent);
console.log(`${indent}(${cmt.id}) ${cmt.author}: ${body}`);
for await (const reply of cmt.replies) {
await printTree(reply, indent + " ");
}
}
(async () => {
const comment = await client.comments.fetch("gqe92yr");
await printTree(comment);
})();
For full project examples check out the examples directory
More examples will come as snoots evolves!
There are some major differences between snoots and snoowrap. Here are some of the largest:
- Objects are not lazy loaded.
- Promise chaining properties is not allowed.
- All parameters are camelCase, not snake_case.
- Listings are not arrays, but they can be iterated using
for await
. - Sub-objects are not auto-populated (like
Post
andComment
'sauthor
). In snoowrap theauthor
field is a user object, but in snoots it's just a string.
What does this mean in practice? Here are some examples:
-
Reading the title of the newest post from r/funny:
// snoowrap const title = await client.getSubreddit("funny").getNew()[0].title; // snoots (literal translation) const sub = await client.subreddits.fetch("funny"); const post = await sub.getNewPosts().first(); const title = post?.title; // snoots (preferred method, 1 fewer api call) const post = await client.subreddits.getNewPosts("funny").first(); const title = post?.title;
-
Listing the authors of the currently hot posts in r/funny:
// snoowrap const posts = await client.getSubreddit("funny").getHot().fetchAll(); for (const post of posts) { console.log(post.author.name); } // snoots (literal translation) const sub = await client.subreddits.fetch("funny"); const posts = sub.getHotPosts(); for await (const post of posts) { console.log(p.author); } // snoots (preferred method, 1 fewer api call) const posts = client.subreddits.getHotPosts("funny"); for await (const post of posts) { console.log(p.author); }