Skip to main content

sopel-bsky

Fetch info about Bluesky links in your IRC conversations using Sopel.

Installing

Releases are hosted on PyPI, so after installing Sopel, all you need is pip:

$ pip install sopel-bsky

Please note that the atproto package maintains a strict Python version policy, so installation might not be possible on a given Python release even if Sopel itself is compatible with it. Drop by GitHub and open a PR or issue if you notice that the dependencies are outdated.

Configuring

The easiest way to configure sopel-bsky is via Sopel's configuration wizard—simply run sopel-plugins configure bsky and enter the values for which it prompts you.

Account login

At present, you need to give the plugin a Bluesky account for which you don't mind storing the handle & password in Sopel's config file in plain text. It's recommended to create a new account specifically for your bot, instead of using your real account's credentials (if you have one).

Output behavior

These settings control how sopel-bsky displays skeet contents.

newline_replacement

Default value: "⏎"

Runs of one or more newlines in a skeet's text will be replaced with this string, wrapped in spaces. For example, the default value of ⏎ is used like this:

<Sopel> [skeet] Wil Wheaton (@wilwheaton.net) | 6 hours, 28 minutes ago |
        Ranking Star Wars movies is a thing? ⏎ Okay, I'll get in on this. ⏎ 1.
        Empire Strikes Back ⏎ 2. Star Wars 1977 theatrical release ⏎ 3. Rogue
        One ⏎ 4. Return of the Jedi (because I was 11) ⏎ Everything else is
        somewhere between "meh" and "why. why. y u do dis?" [sad kitten dot jpg]

The special value off will disable newline substitution. Note that leading & trailing spaces in the value you enter will be ignored; this is a limitation of Sopel's config format and parser.

Maintenance Note

This plugin as it exists now is mostly a proof of concept, just to have some minimal level of parity with the Sopel ecosystem's support for Twitter (it is not called X!) and Mastodon.

Showing details for links to Bluesky users and posts was tested and confirmed working as of the last release's publish date. The plugin is published in the hope that it will be useful; in case of breakage or needed improvements, pull requests are always welcome.

Changelog

0.2.0

Added:

  • Configurable replacement character for newlines in skeet text (#11, #12)

Fixed:

  • Fix handling of skeet links using DID instead of handle (#10)

General:

  • Updated atproto library version for Python 3.9+ (#6)
  • Require newer, faster-to-start pydantic on supported Python versions (#6)
  • Lazy-load atproto at plugin startup (#7)

0.1.2

  • Bumped atproto library version
  • Fixed parsing ISO-format timestamps without milliseconds
  • Meta-updates (package metadata, workflows)

Note: This release doesn't support Python 3.14 (which became stable earlier in October 2025), because atproto doesn't support it yet.

0.1.1

Bumped atproto library version. Skeets with video (a recently added feature) no longer cause exceptions.

0.1.0

First release of sopel-bsky.

Metadata

Release files for sopel-bsky 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sopel-bsky 0.2.0
File Size Uploaded
sopel_bsky-0.2.0.tar.gz 6.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sopel-bsky 0.2.0
File Interpreter ABI Platform
sopel_bsky-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 12.3 kB

Release files / sopel_bsky-0.2.0.tar.gz

Download URL sopel_bsky-0.2.0.tar.gz
Size 6.1 kB
Tags Source
SHA-256 checksum
How to use checksums
bf2b89cbd1b8f71214e44623106eb086ccd0327a0d2f253d3b1b3c853c53cbff
BLAKE2b-256 checksum
How to use checksums
eea1e334385c953b4dd25cf976b516c314c55368305a7e31109c8b17578f9be8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 30, 2025.

Transparency log

Release files / sopel_bsky-0.2.0-py3-none-any.whl

Download URL sopel_bsky-0.2.0-py3-none-any.whl
Size 6.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6e154313fbcdeb7f74343e3cf461a2013d2745fd56146d9f55d5dd9672062649
BLAKE2b-256 checksum
How to use checksums
f4f397a8a4731fd96713dc9e97ca06750e65b7f8b3f3be8240adfdc99eb2f626
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 30, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page