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.