SubredditWidgets

class asyncpraw.models.SubredditWidgets(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:

Parameters:

subreddit (asyncpraw.models.Subreddit)

__init__(subreddit)

Initialize a SubredditWidgets instance.

Parameters:

subreddit (Subreddit) – The Subreddit the widgets belong to.

Return type:

None

await id_card()

Get this Subreddit’s IDCard widget.

Return type:

IDCard

await items()

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

Return type:

dict[str, Widget]

mod()

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().

Return type:

SubredditWidgetsModeration

await moderators_widget()

Get this Subreddit’s ModeratorsWidget.

Return type:

ModeratorsWidget

classmethod parse(data, reddit)

Return an instance of cls from data.

Parameters:
Return type:

AsyncPRAWBase

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()
Return type:

None

await sidebar()

Get a list of Widgets that make up the sidebar.

Return type:

AsyncIterator[Widget]

await topbar()

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

Return type:

AsyncIterator[Menu]