PRAW, an acronym for "Python Reddit API Wrapper", is a python package that allows for simple access to Reddit's API.

Overview

PRAW: The Python Reddit API Wrapper

Latest PRAW Version Supported Python Versions PyPI - Downloads - Monthly Coveralls Coverage Github Actions Coverage Contributor Covenant

PRAW, an acronym for "Python Reddit API Wrapper", is a Python package that allows for simple access to Reddit's API. PRAW aims to be easy to use and internally follows all of Reddit's API rules. With PRAW there's no need to introduce sleep calls in your code. Give your client an appropriate user agent and you're set.

Installation

PRAW is supported on Python 3.6+. The recommended way to install PRAW is via pip.

pip install praw

To install the latest development version of PRAW run the following instead:

pip install --upgrade https://github.com/praw-dev/praw/archive/master.zip

For instructions on installing Python and pip see "The Hitchhiker's Guide to Python" Installation Guides.

Quickstart

Assuming you already have a credentials for a script-type OAuth application you can instantiate an instance of PRAW like so:

import praw
reddit = praw.Reddit(client_id="CLIENT_ID", client_secret="CLIENT_SECRET",
                     password="PASSWORD", user_agent="USERAGENT",
                     username="USERNAME")

With the reddit instance you can then interact with Reddit:

# Create a submission to r/test
reddit.subreddit("test").submit("Test Submission", url="https://reddit.com")

# Comment on a known submission
submission = reddit.submission(url="https://www.reddit.com/comments/5e1az9")
submission.reply("Super rad!")

# Reply to the first comment of a weekly top thread of a moderated community
submission = next(reddit.subreddit("mod").top("week"))
submission.comments[0].reply("An automated reply")

# Output score for the first 256 items on the frontpage
for submission in reddit.front.hot(limit=256):
    print(submission.score)

# Obtain the moderator listing for r/redditdev
for moderator in reddit.subreddit("redditdev").moderator():
    print(moderator)

Please see PRAW's documentation for more examples of what you can do with PRAW.

Discord Bots and Asynchronous Environments

If you plan on using PRAW in an asynchronous environment, (e.g., discord.py, asyncio) it is strongly recommended to use Async PRAW. It is the official asynchronous version of PRAW and its usage is similar and has the same features as PRAW.

PRAW Discussion and Support

For those new to Python, or would otherwise consider themselves a Python beginner, please consider asking questions on the r/learnpython subreddit. There are wonderful people there who can help with general Python and simple PRAW related questions.

Otherwise, there are a few official places to ask questions about PRAW:

r/redditdev is the best place on Reddit to ask PRAW related questions. This subreddit is for all Reddit API related discussion so please tag submissions with [PRAW]. Please perform a search on the subreddit first to see if anyone has similar questions.

Real-time chat can be conducted via the PRAW Slack Organization (please create an issue if that invite link has expired).

Please do not directly message any of the contributors via Reddit, email, or Slack unless they have indicated otherwise. We strongly encourage everyone to help others with their questions.

Please file bugs and feature requests as issues on GitHub after first searching to ensure a similar issue was not already filed. If such an issue already exists please give it a thumbs up reaction. Comments to issues containing additional information are certainly welcome.

Note

This project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Documentation

PRAW's documentation is located at https://praw.readthedocs.io/.

History

August 2010: Timothy Mellor created a github project called reddit_api.

March 2011: The Python package reddit was registered and uploaded to pypi.

December 2011: Bryce Boe took over as maintainer of the reddit package.

June 2012: Bryce renamed the project PRAW and the repository was relocated to the newly created praw-dev organization on GitHub.

February 2016: Bryce began work on PRAW4, a complete rewrite of PRAW.

License

PRAW's source (v4.0.0+) is provided under the Simplified BSD License.

  • Copyright ©, 2016, Bryce Boe

Earlier versions of PRAW were released under GPLv3.

Comments
  • Insufficient support for Multireddits

    Insufficient support for Multireddits

    I've done several searches throughout the repo, and as far as I can tell there aren't any resources for handling Multireddits. I'd love to help develop this if a project manager can get some groundwork started. Any plans? (Is there a to-do file somewhere?)

    Multireddit API

    Feature 
    opened by voussoir 36
  • Moderation streams

    Moderation streams

    Feature Summary and Justification

    This feature provides the ablilty to stream from subreddit.mod methods. Added Moderator stream for the following:

    • edited
    • mod log
    • modqueue
    • reports
    • spam
    • unmoderated
    • unread
    • modmail_conversations
    Feature 
    opened by LilSpazJoekp 35
  • Comment stream dropping comments?

    Comment stream dropping comments?

    Issue Description

    A simple consumer like the below seems to not be processing all comments.

    I observed a drop in total comment throughput with the praw stream sometime around december 2018 and it has never really recovered.

    I have tested by manually making a number of comments and observing that some of them don't get captured by the praw stream.

    IO on the client side is not a limiting factor.

    for comment in reddit.subreddit('all').stream.comments():
       do_something(comment)
    

    System Information

    • PRAW Version: 6.0.0
    • Python Version: 3.7
    • Operating System:
    Bug Documentation Verified Stale Auto-closed - Stale 
    opened by bicubic 33
  • Updating Collection Display Layout

    Updating Collection Display Layout

    Fixes # (provide issue number if applicable)

    Feature Summary and Justification

    Currently, there is no PRAW function to modify a collection's display layout to either:

    • TIMELINE: Best for event or discussion collections
    • GALLERY: Best for image-heavy or meme collections

    This feature allows the user to do just that.

    This pull request provides ... A solution to this problem.

    References

    Other

    • An additional PRAW function will need to be made that sets a display layout type when creating a new collection.
    • Sorry about the duplicate commit message. The second one should have said "Forgot to include unit test".
    opened by jsk56143 28
  • Create a new flair model

    Create a new flair model

    As of right now, flairs are returned as dicts. I was thinking of making them into Flair objects.

    Several questions:

    • How do I make the Reddit instance objectify the dict into this flair object?
    • Should I throw a ClientException when a user tries to edit a flair that it cannot, or just pass.
    • Should the flair() method accept a flair object (current), or both a flair object or an id/text combo?
    Feature 
    opened by PythonCoderAS 28
  • Suggesting a new logo for PRAW

    Suggesting a new logo for PRAW

    Feature Summary and Justification

    PRAW's current logo seemed a bit un-indicative of the package's purpose, I felt. (It would be at home if it were for a LEGO API, though). I feel that the image that should represent PRAW should also represent what it is - Python and Reddit.

    I put together a new logo as a suggestion, one that combines the double-snakes of Python with the antenna of Reddit's Snoo. The background color is #FF4500, better known as "orangered" to long-time Redditors. The font is DIN 1451, chosen to avoid overt resemblance to the Reddit wordmark and font to avoid confusion about officiality.

    I sized this to be the same size as GitHub's social media preview so it can be used for this repository as well. Humbly submitting it for consideration!

    opened by kungming2 28
  • Fixed a bug in RateLimitExceeded with incorrect key to response dict

    Fixed a bug in RateLimitExceeded with incorrect key to response dict

    RateLimitExceeded.init was setting sleep_time to response['ratelimit'] which was throwing a KeyError exception every time I hit it. Swtiched to 'delay' which seemed to fix the functionality.

    If this isn't correct, ignore this, but it fixed my problem and I thought I'd share it.

    If this isn't the correct branch to send the pull request to but the fix should still be pulled, please let me know.

    Bug 
    opened by north1 27
  • Add helper for downloading all submissions in a subreddit between two timestamps (Implements: #337)

    Add helper for downloading all submissions in a subreddit between two timestamps (Implements: #337)

    Hi, I've used this trick quite a lot, so I took some time and implemented a helper for praw. I hope you'll find it useful!

    1. Reddit seems to use created attribute for "timestamp" queries. created seems to be a sort of broken timestamp. I think this is very confusing, and I always forget to convert time.time() output to "reddit timestamp". That's why I chose to make highest_timestamp and lowest_timestamp to be normal unix timestamp(even though it is inconsistent with r.search)

    2. I am not a native speaker, so sorry in advance for possible grammatical errors in the docstring.

    3. The basic algorithm is fairly simple, it just slides a dynamic length window over reddit timestamps and tries to keep 30..99 results within the window. Whenever this condition breaks, it increases or decreases the window length by a factor of 2x. I never really bothered to optimize these parameters, they are good enough for me. Maybe it is a good idea to expose them as function parameters.

    4. Naming! TBH, I am not sure if all_submissions is a good name.

    Any feedback is appereciated!

    opened by eleweek 26
  • AssertionError: comment.parent_id in self._submission._comments_by_id

    AssertionError: comment.parent_id in self._submission._comments_by_id

    Describe the bug When loading all the comments for post 41ntws (and a handful of others), I get this assertion error. I have not had this problem on tons of other posts, just a few. In case it's helpful, here is the complete list of posts I get this error on:

    50slvn
    4wvz6z
    4fmyzj
    41ntws
    41dkav
    3gljgr
    a8ekca
    fz5363
    

    They're all AskReddit posts with pretty high comment counts, but I've downloaded posts with even more comments regularly before with no issue.

    I found that it seems to be breaking when it gets to comment cz3wnj7. Interestingly, going to the parent of that comment gives a weird "there doesn't seem to be anything here" page instead of showing a deleted comment like normal. That probably has something to do with it.

    To Reproduce Steps to reproduce the behavior:

    1. Fetch the post with ID 41ntws
    2. Do comments.replace_more(limit=None)
    3. Wait

    Expected behavior All comments get loaded

    Code/Logs Here is my exact repro code:

    import praw
    import json
    
    credentials = json.load(open("D:/~No Sync/reddit auth.json"))
    reddit = praw.Reddit(client_id=credentials['client_id'], client_secret=credentials['client_secret'], user_agent=credentials['user_agent'], username=credentials['username'], password=credentials['password'])
    post = reddit.submission(url="https://reddit.com/comments/41ntws")
    post.comments.replace_more(limit=None)
    

    Here is my stacktrace:

    Traceback (most recent call last):
      File "D:\Documents\Website Archive\code\test.py", line 7, in <module>
        post.comments.replace_more(limit=None)
      File "C:\Program Files (x86)\Python38-32\lib\site-packages\praw\models\comment_forest.py", line 194, in replace_more
        self._insert_comment(comment)
      File "C:\Program Files (x86)\Python38-32\lib\site-packages\praw\models\comment_forest.py", line 82, in _insert_comment
        assert comment.parent_id in self._submission._comments_by_id, (
    AssertionError: PRAW Error occured. Please file a bug report and include the code that caused the error.
    

    System Info

    • OS: Windows 10
    • Python: 3.8.2
    • PRAW Version: 7.0.0
    Bug 
    opened by tryashtar 25
  • Addition of the ability to set/unset submission as original content

    Addition of the ability to set/unset submission as original content

    Feature Summary and Justification

    Added two methods to the SubmissionModeration class called set_original_content() and unset_original_content(). These methods allows a moderator to set a post as "Original Content (OC)", a tag that is similar to the existing NSFW and Spoiler tags. Note that moderators can mark a post as "OC" on both Old and New Reddit; but submitters have to use New Reddit in order to mark their own posts as such. The feature itself has to be enabled in a subreddit's settings first.

    Though the admin announcement says the tag is only for New Reddit, the feature was backported to Old Reddit and is viewable on the old site as well.

    This endpoint is not officially on the main API page, and the admin response of a year ago was to consider adding it to the API, but that was never done officially. Therefore there is a chance that this endpoint will be deprecated without warning in the future but it currently works and the feature has been fully operational on both desktop versions of Reddit for over a year and a half. The feature does not yet appear on the mobile app.

    A submission with this tag will have another attribute is_original_content set to True. If that submission's OC tag is subsequently removed, its attribute is_original_content will become set to False. Generic submissions may not have is_original_content as an attribute.

    Please note that unlike the NSFW tags, this has not been integrated by Reddit into search. Therefore, while nsfw:true works, oc:true will not return any results from a search query.

    I have also tested this endpoint several times with my bot u/AssistantBOT.

    Timeline

    References

    opened by kungming2 25
  • Add support for users with long passwords and 2FA enabled

    Add support for users with long passwords and 2FA enabled

    Describe the solution you'd like Reddit's suggested solution of passing the 2FA token to /api/v1/access_token as part of the value of the password parameter, i.e 'password' = password+':'+token, doesn't work for users with long passwords because of what appears to be a bug on their end. This isn't a big deal, because instead of using Reddit's suggested method, it also turns out that you can pass the 2FA token to /api/v1/access_token in a separate otp parameter—see below. PRAW or prawcore could be tweaked to handle 2FA tokens if users input their original otp secret at initialization,

    Describe alternatives you've considered Update documentation to inform users with long passwords and 2FA enabled that they're SOL.

    Additional context Someone on /r/redditdev claimed that you couldn't use a password flow with 2FA if the password was >= 72 characters long, and it's true. Setting the password to password:token fails for large passwords, with or without PRAW. Reddit passwords can be up to 500kb long, but bcrypt only cares about the first 72 characters, so I would guess that Reddit has a bug somewhere in their password validation process.

    I used the network inspector while logging into new Reddit, and noticed that the password form had a field for the 2FA token named 'otp'. On a whim, I added 'otp':'xxxxxx' to the POST data of the usual non-PRAW oauth login with Python:

    import pyotp
    import requests
    
    otp_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    otp_token = pyotp.TOTP(otp_secret).now()
    client_auth = requests.auth.HTTPBasicAuth('client_id','client_secret')
    post_data = {
    	"grant_type": "password",
    	"username": username,
    	"password": password,
    	"otp": otp_token
    }
    headers = {"User-Agent": "xxxxxxxxxxxxxxxxxxxxxxxx"}
    response = requests.post(
    	"https://www.reddit.com/api/v1/access_token",
    	auth=client_auth,
    	data=post_data,
    	headers=headers
    )
    

    ...and it worked. response.json() returns the usual set of

    {'access_token': 'xxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxx', 'token_type': 'bearer', 'expires_in': 3600, 'scope': '*'}.

    So sure enough, 'otp' is a valid parameter for /api/v1/access_token when using a password with 2FA. If a user passed in the otp_secret at initialization, when it comes time to fetch or refresh bearer tokens, PRAW could then just calculate the 2FA token with pyotp.TOTP(otp_secret).now() (or with an equivalent function) and add that to the rest of the data in the request.

    Feature Stale Auto-closed - Stale 
    opened by MaybeNetwork 24
  • documentation incorrect: muted() → praw.models.reddit.subreddit.SubredditRelationship

    documentation incorrect: muted() → praw.models.reddit.subreddit.SubredditRelationship

    Describe the Bug

    Errors when example code is executed.

    Docs here: https://praw.readthedocs.io/en/stable/code_overview/other/subredditrelationship.html#praw.models.reddit.subreddit.SubredditRelationship

    Desired Result

    Change the docs?

    Relevant Logs

    c:\python39\lib\site-packages\praw\models\reddit\base.py in __getattr__(self, attribute)
         33         if not attribute.startswith("_") and not self._fetched:
         34             self._fetch()
    ---> 35             return getattr(self, attribute)
         36         raise AttributeError(
         37             f"{self.__class__.__name__!r} object has no attribute {attribute!r}"
    
    c:\python39\lib\site-packages\praw\models\reddit\base.py in __getattr__(self, attribute)
         34             self._fetch()
         35             return getattr(self, attribute)
    ---> 36         raise AttributeError(
         37             f"{self.__class__.__name__!r} object has no attribute {attribute!r}"
         38         )
    
    AttributeError: 'Redditor' object has no attribute 'note'
    

    Code to reproduce the bug

    for mute in reddit.subreddit("test").muted():
        print(f"{mute}: {mute.note}")
    

    My code example does not include the Reddit() initialization to prevent credential leakage.

    Yes

    This code has previously worked as intended.

    Yes

    Operating System/Environment

    windoze

    Python Version

    python 3.9.1

    PRAW Version

    7.4.0

    Prawcore Version

    2.3.0

    Anything else?

    Docs here: https://praw.readthedocs.io/en/stable/code_overview/other/subredditrelationship.html#praw.models.reddit.subreddit.SubredditRelationship

    opened by computerologist 4
  • reddit.subreddit.mod.removal_reasons isn't indexed in display order

    reddit.subreddit.mod.removal_reasons isn't indexed in display order

    Describe the Bug

    reddit.subreddit.mod.removal_reasons isn't indexed in display order

    Desired Result

    reddit.subreddit.mod.removal_reasons should be indexed in display order

    Relevant Logs

    No response

    Code to reproduce the bug

    No response

    My code example does not include the Reddit() initialization to prevent credential leakage.

    Yes

    This code has previously worked as intended.

    Yes

    Operating System/Environment

    windows

    Python Version

    python 3.9.1

    PRAW Version

    7.4.0

    Prawcore Version

    2.3.0

    Anything else?

    No response

    opened by computerologist 2
  • submission.edit doesn't preserve photos when I edit a submission with submission.selftext.

    submission.edit doesn't preserve photos when I edit a submission with submission.selftext.

    Describe the Bug

    When I do so, it posts a link to the media instead of embedding the media like it's supposed to. This is the first time trying to edit posts at with PRAW. @LilSpazJoekp said on Reddit I should submit this.

    Desired Result

    Right now I'm trying to get submission.edit() to preserve photos and videos, and once I do I want to be able to add in new photos and or videos when editing posts.

    Relevant Logs

    No response

    Code to reproduce the bug

    import praw
    
    reddit = praw.Reddit("DEFAULT", user_agent="macos:praw:1.0.0 (by /u)") 
    submission = reddit.submission(url="https://www.reddit.com/r/KamenRider/comments/xjw2k2/kamen_rider_geats_episode_other_content_ratings/")
    submission.edit(body=submission.selftext)
    

    My code example does not include the Reddit() initialization to prevent credential leakage.

    Yes

    This code has previously worked as intended.

    No

    Operating System/Environment

    macOS Ventura 13.0

    Python Version

    3.9.13

    PRAW Version

    7.6.1

    Prawcore Version

    2.3.0

    Anything else?

    No response

    opened by Oneechan69 10
  • rules.mod.reorder no longer working

    rules.mod.reorder no longer working

    Describe the Bug

    Attempting to reorder the rules of a subreddit tracebacks because the response is returning None.

    Desired Result

    It looks as though this line should return an iterative function: response = self.subreddit_rules._reddit.post(API_PATH["reorder_subreddit_rules"], data=data)I've tried commenting out the lines that traceback to just see what response is, and response=None

    Relevant Logs

    File "C:\python332\lib\site-packages\praw\models\reddit\rules.py", line 448, in reorder
        for rule in response:
    TypeError: 'NoneType' object is not iterable
    >>>
    

    Code to reproduce the bug

    subreddit = reddit.subreddit("test")
    rules = list(subreddit.rules)
    # reorder them in any means you like, my preferred is:
    new = [rules[1], rules[0], rules[2]]
    subreddit.rules.mod.reorder(new)
    

    My code example does not include the Reddit() initialization to prevent credential leakage.

    Yes

    This code has previously worked as intended.

    No

    Operating System/Environment

    windows

    Python Version

    3.8

    PRAW Version

    7.6.0

    Prawcore Version

    2.3.0

    Anything else?

    No response

    Reddit API Change 
    opened by NathanTech7713 8
  • Add support for bytes formatted images to submit_image and submit_gallery

    Add support for bytes formatted images to submit_image and submit_gallery

    Feature Summary and Justification

    This feature enables a user to upload an image or images each represented as a Bytes Object to Reddit through the submit_image and submit_gallery functions.

    For context, my own use-case involves backblaze.com, particularly this function of their API. To summarize, a successful request to the backblaze API returns images as bytes objects. After looking into PRAW documentation I discovered that I could only submit an image through it by first downloading and saving the file before providing each of the modified functions the filepath(s) of any images I wanted to submit. Given my use case, this would mean I would need my machine to download, save, upload, and then delete any number of images on my system each time I made use of those functions.

    These changes mean an object can be pulled in from a foreign API and passed directly to PRAW for uploading. It skips the awkward saving and deleting steps which should save processing time when scaled.


    The "image_path" input parameter for both functions has been changed to "image". It still accepts image paths--it's only the name of the input parameter that has changed so as to more clearly indicate that Bytes Objects now work too. In the case of submit_gallery, the input can be mixed. So there could be any number of image paths and Bytes Objects submitted to the same gallery.

    References

    Feature Discussion 
    opened by redowul 32
Releases(v7.6.1)
  • v7.6.1(Nov 11, 2022)

    7.6.1 (2022/11/11)

    Changed

    • Revert :meth:~.Comment.edit positional argument deprecation.
    • Revert :meth:~.Comment.reply positional argument deprecation.
    • Revert :meth:~.Message.reply positional argument deprecation.
    • Revert :meth:~.Submission.edit positional argument deprecation.
    • Revert :meth:~.Submission.reply positional argument deprecation.

    Fixed

    • An issue where :class:.ModmailConversation's messages attribute would only contain the latest message.
    Source code(tar.gz)
    Source code(zip)
  • v7.6.0(May 10, 2022)

    7.6.0 (2022/05/10)

    Added

    • :meth:.pin to manage pinned submissions on the authenticated user's profile.
    • :meth:.update_display_layout to update the display layout of posts in a :class:.Collection.
    • :meth:.SubredditCollectionsModeration.create keyword argument display_layout for specifying a display layout when creating a :class:.Collection.
    • :attr:~.Message.parent to get the parent of a :class:.Message.
    • :class:.ModNote to represent a moderator note.
    • :meth:.ModNote.delete to delete a single moderator note.
    • :class:.RedditModNotes to interact with moderator notes from a :class:.Reddit instance. This provides the ability to create and fetch notes for one or more redditors from one or more subreddits.
    • :class:.RedditorModNotes to interact with moderator notes from a :class:.Redditor instance.
    • :meth:.RedditorModNotes.subreddits to obtain moderator notes from multiple subreddits for a single redditor.
    • :class:.SubredditModNotes to interact with moderator notes from a :class:.Subreddit instance.
    • :meth:.SubredditModNotes.redditors to obtain moderator notes for multiple redditors from a single subreddit.
    • :meth:~.BaseModNotes.create to create a moderator note.
    • :attr:.Redditor.notes to interact with :class:.RedditorModNotes.
    • :attr:.SubredditModeration.notes to interact with :class:.SubredditModNotes.
    • :meth:~.ModNoteMixin.create_note create a moderator note from a :class:.Comment or :class:.Submission.
    • :meth:~.ModNoteMixin.author_notes to view the moderator notes for the author of a :class:.Comment or :class:.Submission.

    Changed

    • Drop support for Python 3.6, which is end-of-life on 2021-12-23.
    • :meth:.conversations now returns a :class:.ListingGenerator allowing you to page through more than 100 conversations.

    Deprecated

    • The after argument for :meth:.conversations will now have to be included in the params keyword argument.
    • Positional keyword arguments for applicable functions and methods. Starting with PRAW 8, most functions and methods will no longer support positional arguments. It will encourage more explicit argument passing, enable arguments to be sorted alphabetically, and prevent breaking changes when adding new arguments to existing methods.
    Source code(tar.gz)
    Source code(zip)
  • v7.5.0(Nov 14, 2021)

    7.5.0 (2021/11/13)

    Added

    • Log a warning if a submission's comment_sort attribute is updated after the submission has already been fetched and a warn_comment_sort config setting to turn off the warning.
    • :meth:.user_selectable to get available subreddit link flairs.
    • Automatic RateLimit handling will support errors with millisecond resolution.

    Fixed

    • An import error when using PRAW in environments where libsqlite3-dev is needed to utilize the sqlite3 builtin.
    • Fixed bug where some keyword arguments that are passed to :meth:.Draft.submit would not have an effect.
    Source code(tar.gz)
    Source code(zip)
  • v7.4.0(Jul 30, 2021)

    7.4.0 (2021/07/30)

    Added

    • :meth:~.WikiPage.discussions to obtain site-wide link submissions that link to the WikiPage.
    • :meth:.revert to revert a WikiPage to a specified revision.
    • :meth:.Inbox.mark_all_read to mark all messages as read with one API call.
    • :meth:~.InboxableMixin.unblock_subreddit to unblock a subreddit.
    • :meth:.update_crowd_control_level to update the crowd control level of a post.
    • :meth:.moderator_subreddits, which returns information about the subreddits that the authenticated user moderates, has been restored.
    • The configuration setting refresh_token has been added back. See https://www.reddit.com/r/redditdev/comments/olk5e6/followup_oauth2_api_changes_regarding_refresh/ for more info.

    Deprecated

    • :class:.Reddit keyword argument token_manager.
    Source code(tar.gz)
    Source code(zip)
  • v7.3.0(Jun 17, 2021)

    7.3.0 (2021/06/17)

    Added

    • :class:.UserSubreddit for the subreddit attribute of :class:.Redditor.
    • :meth:.Reddit.username_available checks if a username is available.
    • :meth:.trusted to retrieve a :class:.RedditorList of trusted users.
    • :meth:.trust to add a user to the trusted list.
    • :meth:.distrust to remove a user from the trusted list.
    • :class:.SQLiteTokenManager (may not work on Windows)

    Changed

    • :meth:.Redditor.moderated will now objectify all data returned from the API.
    • The wiki_edit endpoint has been changed from r/{subreddit}/api/wiki/edit/ to r/{subreddit}/api/wiki/edit.
    • :meth:.Redditor.block no longer needs to retrieve a user's fullname.

    Deprecated

    • The subreddit attribute of :class:.Redditor is no longer a dict.
    • Legacy modmail is slated for deprecation by Reddit in June 2021. See https://www.reddit.com/r/modnews/comments/mar9ha/even_more_modmail_improvements/ for more info.

    Fixed

    • Fixed bug where :meth:.WikiPage.edit and :meth:.SubredditWiki.create would fail if passed content and reason parameters that produced a request with a body greater than 500 KiB, even when the parameters did not exceed their respective permitted maximum lengths.
    • Fixed bug where :meth:.Reddit.request could not handle instances of BadRequest\s when the JSON data contained only the keys "reason" and "message".
    • Fixed bug where :meth:.Reddit.request could not handle instances of BadRequest\s when the response did not contain valid JSON data.
    • Fixed bug where :meth:.FullnameMixin.fullname sometimes returned the wrong fullname.
    Source code(tar.gz)
    Source code(zip)
  • v7.2.0(Feb 24, 2021)

    7.2.0 (2021/02/24)

    Added

    • :class:.Reddit keyword argument token_manager.
    • :class:.FileTokenManager and its parent abstract class :class:.BaseTokenManager.

    Deprecated

    • The configuration setting refresh_token is deprecated and its use will result in a :py:class:DeprecationWarning. This deprecation applies in all ways of setting configuration values, i.e., via praw.ini, as a keyword argument when initializing an instance of :class:.Reddit, and via the PRAW_REFRESH_TOKEN environment variable. To be prepared for PRAW 8, use the new :class:.Reddit keyword argument token_manager. See :ref:refresh_token in PRAW's documentation for an example.
    • :meth:.me will no longer return None when called in :attr:.read_only mode starting in PRAW 8. A :py:class:DeprecationWarning will be issued. To switch forward to the PRAW 8 behavior set praw8_raise_exception_on_me=True in your :class:.Reddit call.
    Source code(tar.gz)
    Source code(zip)
Owner
Python Reddit API Wrapper Development
Python Reddit API Wrapper Development
A chatbot that helps you set price alerts for your amazon products.

Amazon Price Alert Bot Description A Telegram chatbot that helps you set price alerts for amazon products. The bot checks the price of your watchliste

Rittik Basu 24 Dec 29, 2022
A Wrapper for ScarletAPI

ScarletAPI A Wrapper for ScarletAPI still a work in progress Docs these are the

Amashi 0 Mar 24, 2022
Aria/qBittorrent Telegram mirror/leech bot

This is a Telegram Bot written in Python for mirroring files on the Internet to your Google Drive or Telegram. Based on python-aria-mirror-bot Feature

28 Dec 25, 2022
A simple Telegram bot that converts a phone number to a direct whatsapp chat link

Open in WhatsApp I was using a great app to open a whatsapp chat with a given number directly without saving that number in my contact list, but I fel

Pathfinder 19 Dec 24, 2022
Translator based on Google API

Yakusu Toshiko Translator based on Google API. Instance of this bot is running as @yakusubot. Features Add a plus to a language's name to show an orig

Arisu W. 2 Sep 21, 2022
Jika ada pertanyaan lebih lanjut, hubungi kontak dibawah ini. Terimakasih...

⚡ Lynx Userbot ⚡ Userbot Used for Fun on Telegram, and for Maintianing Your Group. This is a Repo Lynx-Userbot. This is Repo was Created by Axel From

29 Aug 30, 2021
Telegram Google Translater Bot

Google-Translater-Bot Hey Mo Tech, I am simple Google Translater Bot. I can translate any language to you selected language Team Mo Tech Deploy To Her

21 Dec 01, 2022
Twitter feed of newly published articles in Limnology

limnopapers Code to monitor limnology RSS feeds and tweet new articles. Scope The keywords and journal choices herein aim to focus on limnology (the s

7 Dec 20, 2022
Auxiliator is telegram bot for basic web-application analysis

Auxiliator Auxiliator is telegram bot for basic web-application analysis What for? Sometimes there is no access to your main PC, where you can scan we

Revoltage 13 Dec 26, 2021
Black-hat with python

black-hat_python Advantages - More advance tool Easy to use allows updating tool update - run bash update.sh Here -: Command to install tool main- clo

Hackers Tech 2 Feb 10, 2022
API kumpulan doa-doa sesuai al-qur'an dan as-sunnah

API kumpulan doa-doa sesuai al-qur'an dan as-sunnah

Miftah Afina 4 Nov 26, 2022
SEP Finder Bot

SEP Finder Bot This is a Telegram bot that will help you find the correct SEP and Baseband files to use for your device with futurerestore. Usage A ho

6 Dec 03, 2022
A pypi package that helps in generating discord bots.

A pypi package that helps in generating discord bots.

KlevrHQ 3 Nov 17, 2021
Clippin n grafting Backend

Clipping' n Grafting Presenting you, 🎉 Clippin' n Grafting 🎉 , your very own ecommerce website displaying all your artsy-craftsy stuff. Not only the

Google-Developer-Student-Club-ISquareIT (GDSC I²IT) 2 Oct 22, 2021
Python bindings for Alexa Web Information Service (AWIS) API

Attention! This package is no longer maintained. See this ticket for more info. Wraps Alexa Web Information Service. Usage Making UrlInfo requests: ap

Atamert Ölçgen 51 Feb 12, 2022
A compatability shim between Discord.py and Hikari.

Usage as a partial shim: import discord import hikari import hikari_shim dpy_bot = discord.Client(intents=discord.Intents.all(), enable_debug_events=

EXPLOSION 3 Dec 25, 2021
Lazy airdrop based on private temporary ids

LobsterDAO This uses a modified MerkleDistributor, which allows to issue a lazy airdrop using temporary IDs. In this example it uses Telegram chat_id

41 Sep 10, 2022
Check and write all account info + Check nitro on account

Discord-Token-Checker Check and write all account info + Check nitro on account Also check https://github.com/GuFFy12/Discord-Token-Parser (Parse disc

36 Jan 01, 2023
A telegram bot to forward messages automatically when they arrived.

Telegram Message Forwarder Bot A telegram bot, which can forward messages from channel, group or chat to another channel, group or chat automatically.

Adnan Ahmad 181 Jan 07, 2023
This is a discord bot, which tells you food recipes.

Discord Chef Bot You have a friend, familiy or other group / channel where the topic is the food? You cannot really decide what's for Saturday lunch?

2 Apr 25, 2022