Skip to main content
Discord presence lets other users see what you are doing at a glance, whether you are playing a game, listening to music, or streaming live. alterself exposes a bot.change_presence() coroutine that accepts a status string and a list of Activity objects. Pair it with the built-in activity helper functions and you can build everything from a simple “Playing Chess” status to a fully cycling presence carousel without touching raw JSON.

Status Options

The status parameter of change_presence() controls the coloured indicator shown next to your avatar. The four accepted values map directly to Discord’s own status names.

Activity Helpers

alterself ships with a set of convenience functions that each return a pre-configured Activity object. You pass the result straight into the activities list of change_presence().

Playing

Streaming

The url parameter must be a valid Twitch or YouTube URL for Discord to render the live badge.

Listening

Watching

Competing

Custom Status

Custom statuses appear below your username and support emoji.

Fake Spotify

alterself.spotify() synthesises a Spotify-style listening activity complete with track progress. Pass Unix millisecond timestamps for start and end to drive the seek bar.

Manual Activity Object

When you need full control over every Rich Presence field (custom artwork keys, match state strings, or a precise start timestamp), construct an Activity directly.

ActivityKind values

large_image and small_image must match the asset keys you uploaded in the Discord Developer Portal for the application ID you registered the Rich Presence under, or be valid mp: media-proxy URLs.

Presence Cycling

You can rotate through a list of activities on a timed interval by running an asyncio background task. The example below cycles through four activities, updating every 60 seconds.
Keep the sleep interval at 60 seconds or longer. Updating presence too rapidly can cause Discord to silently drop updates or rate-limit your gateway connection.