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
atprotolibrary version for Python 3.9+ (#6) - Require newer, faster-to-start
pydanticon supported Python versions (#6) - Lazy-load
atprotoat plugin startup (#7)
0.1.2
- Bumped
atprotolibrary 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)
| File | Size | Uploaded | |
|---|---|---|---|
| sopel_bsky-0.2.0.tar.gz | 6.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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