1
0
Fork
You've already forked multiposter
0
Small application to post to multiple services simultaneously
  • Common Lisp 100%
glenneth c8ae804975
Add overflow-mode to multiposter for controlling post truncation behavior
Adds a configurable overflow-mode setting to the multiposter class that
controls what happens when post text exceeds a client's character limit:
 :truncate - Silently truncate with '...' (default, backward compatible)
 :error - Signal an error, do not post
The setting is persisted in the config file and can be changed via:
 multiposter set overflow-mode truncate
 multiposter set overflow-mode error
The overflow-mode is automatically passed from the multiposter instance
through compose-post to compose-post-text, so all clients respect it
without needing individual changes.
2026年02月07日 10:43:02 +01:00
.woodpecker Woodpecker 2026年01月03日 12:05:38 +01:00
clients Fix misspelt words ( #16 ) 2026年02月04日 08:41:26 +01:00
docs Doc update 2025年08月20日 16:10:50 +02:00
.gitignore Buncha stuff 2023年09月10日 16:53:08 +02:00
config.lisp Add overflow-mode to multiposter for controlling post truncation behavior 2026年02月07日 10:43:02 +01:00
documentation.lisp Add overflow-mode to multiposter for controlling post truncation behavior 2026年02月07日 10:43:02 +01:00
LICENSE license 2023年09月11日 11:09:52 +02:00
main.lisp Add overflow-mode to multiposter for controlling post truncation behavior 2026年02月07日 10:43:02 +01:00
multiposter.asd Implement discord webhook client. ( #11 ) 2026年02月03日 11:40:28 +01:00
package.lisp Add overflow-mode to multiposter for controlling post truncation behavior 2026年02月07日 10:43:02 +01:00
protocol.lisp Add overflow-mode to multiposter for controlling post truncation behavior 2026年02月07日 10:43:02 +01:00
README.mess Implement discord webhook client. ( #11 ) 2026年02月03日 11:40:28 +01:00
toolkit.lisp Add overflow-mode to multiposter for controlling post truncation behavior 2026年02月07日 10:43:02 +01:00

# About Multiposter
This is an application that lets you post to multiple web services at once.
## How To
While you can use Multiposter from the REPL, it also has a convenient command line interface. To build a binary, simply run ``sbcl --eval '(asdf:make :multiposter)'``.
The following services are supported:
- "Cohost"(https://cohost.org)
- File (just writes to disk)
- Git (commits and pushes)
- "Lichat"(https://shirakumo.org/docs/lichat)
- "Mastodon"(https://mastodon.social)
- "Pixiv"(https://pixiv.net)
- "Reader"(https://shirakumo.org/project/reader)
- "Studio"(https://shirakumo.org/project/studio)
- "Tumblr"(https://tumblr.com)
- WebDAV
- "Bluesky"(https://bsky.app)
- "Discord"(https://discord.com/) via "webhook"(https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks) (text and images only)
On the command line you can simply run ``multiposter`` and it should show you a nice help text with all the available options and commands.
## Creating New Clients
If you'd like to contribute another client to Multiposter, it's not too hard. Simply create a new client class with ``define-client``, and ensure all the properties that should be persisted for it are returned from an ``initargs`` method. Then implement methods for the ``post``, ``ready-p`` and ``setup`` functions.
If your service supports undoing/deleting a post, you should also create a ``result`` subclass and implement the ``undo`` method for it. Your ``post`` methods should then return a result instance on success, such that the post can be removed again later if desired.
For the ``setup`` function, make sure you implement the following logic: if ``&rest args`` are passed, reinitialise your client to use those initargs. Otherwise, if your client is not yet ``ready-p``, perform an interactive setup using ``query`` to prompt the user for the necessary options.