SubredditWidgets

class asyncpraw.models.SubredditWidgets(subreddit: asyncpraw.models.Subreddit)

Class to represent a Subreddit’s widgets.

Create an instance like so:

subreddit = await reddit.subreddit("test")
widgets = subreddit.widgets

Data will be lazy-loaded. By default, Async PRAW will not request progressively loading images from Reddit. To enable this, instantiate a SubredditWidgets object via widgets(), then set the attribute progressive_images to True before performing any action that would result in a network request.

subreddit = await reddit.subreddit("test")
widgets = subreddit.widgets
widgets.progressive_images = True
async for widget in widgets.sidebar():
    # do something
    ...

Access a Subreddit’s widgets with the following attributes:

print(await widgets.id_card())
print(await widgets.moderators_widget())
print([widget async for widget in widgets.sidebar()])
print([widget async for widget in widgets.topbar()])

The attribute id_card contains the Subreddit’s ID card, which displays information like the number of subscribers.

The attribute moderators_widget contains the Subreddit’s moderators widget, which lists the moderators of the subreddit.

The attribute sidebar contains a list of widgets which make up the sidebar of the subreddit.

The attribute topbar contains a list of widgets which make up the top bar of the subreddit.

To edit a Subreddit’s widgets, use mod. For example:

await widgets.mod.add_text_area(
    short_name="My title",
    text="**bold text**",
    styles={"backgroundColor": "#FFFF66", "headerColor": "#3333EE"},
)

For more information, see SubredditWidgetsModeration.

To edit a particular widget, use .mod on the widget. For example:

async for widget in widgets.sidebar():
    await widget.mod.update(shortName="Exciting new name")

For more information, see WidgetModeration.

Currently available widgets:

__init__(subreddit: asyncpraw.models.Subreddit)

Initialize a SubredditWidgets instance.

Parameters

subreddit – The Subreddit the widgets belong to.

await id_card() asyncpraw.models.IDCard

Get this Subreddit’s IDCard widget.

await items() Dict[str, asyncpraw.models.Widget]

Get this Subreddit’s widgets as a dict from ID to widget.

mod() asyncpraw.models.SubredditWidgetsModeration

Get an instance of SubredditWidgetsModeration.

Note

Using any of the methods of SubredditWidgetsModeration will likely result in the data of this SubredditWidgets being outdated. To re-sync, call refresh().

await moderators_widget() asyncpraw.models.ModeratorsWidget

Get this Subreddit’s ModeratorsWidget.

classmethod parse(data: Dict[str, Any], reddit: asyncpraw.Reddit) Any

Return an instance of cls from data.

Parameters
  • data – The structured data.

  • reddit – An instance of Reddit.

await refresh()

Refresh the Subreddit’s widgets.

By default, Async PRAW will not request progressively loading images from Reddit. To enable this, set the attribute progressive_images to True prior to calling refresh().

subreddit = await reddit.subreddit("test")
widgets = subreddit.widgets
widgets.progressive_images = True
await widgets.refresh()
async for ... in sidebar() List[asyncpraw.models.Widget]

Get a list of Widgets that make up the sidebar.

async for ... in topbar() List[asyncpraw.models.Menu]

Get a list of Widgets that make up the top bar.