Commit Graph

19 Commits

Author SHA1 Message Date
1c2ab29404 mirror Discord replies as replies on X and bluesky
Replying to a message on the watched channel now posts the reply as a
reply to the posts that message produced, instead of as a standalone
post.

Discord tells us the parent through MessageReference, and the store maps
it back to the Ref each output returned; that Ref rides along on the new
Post.ReplyTo. X takes it as in_reply_to_tweet_id. Bluesky needs the
thread root as well as the parent, so a Ref now carries the root it was
posted under and a post that is not itself a reply acts as its own root.

Replying to something we never distributed, an error notice from the bot
for instance, still posts normally.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-26 12:00:22 +09:00
067c9252c9 mirror Discord deletions to X and bluesky
Deleting a message on the watched channel now deletes the posts it
produced. Making that possible reshapes how a message reaches an output:

  - OutputInterface takes an output.Post and returns an output.Ref, the
    identifier the platform gave the new post (tweet ID for X, URI and
    CID for bluesky). It also gained Delete(Ref).
  - The discord package no longer forwards raw MessageCreate values but
    a discord.Event carrying the kind of change, so the MessageDelete
    handler can use the same channel. Deleted messages arrive without an
    author, so only the channel ID can be filtered on.
  - The new store package remembers Discord message ID -> per output Ref.
    Set POST_STORE to a path to keep that mapping across restarts;
    without it the mapping is memory only and a restart makes older
    messages undeletable. It holds the most recent 1000 messages.

main.go grows a distributor type to hold the outputs and the store
rather than threading them through the event loop.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-26 12:00:22 +09:00
4bd51a31a8 update build-env 2026-07-23 23:16:37 +00:00
c579ae6980 attach image 2026-07-03 10:18:39 +09:00
62cff6355b check 140 digits for twitter 2026-07-03 10:03:19 +09:00
68981e9eb5 add Dockerfile 2025-10-26 16:53:07 +09:00
b8152b3c6a remove redundant stdout 2025-03-20 14:49:46 +09:00
c25735f9c9 add StdOutput 2025-03-20 14:48:08 +09:00
5f9b838af5 change channel struct 2025-03-20 14:40:52 +09:00
d510488d3f remove unnecessary output to stdout at beginning 2025-03-16 19:25:10 +09:00
f9b6c39353 change error handling 2025-03-16 19:24:56 +09:00
1d6e9258f9 login to bsky for each write 2025-03-16 19:13:21 +09:00
bddc971065 add error message while posting 2025-03-16 09:24:15 +09:00
4aa04ce4d1 ignore message sent by bot self on slack channel 2025-03-16 09:08:20 +09:00
c2e8c64262 Revert "add message"
This reverts commit 6c4239f5d0.
2025-03-15 20:11:49 +09:00
6c4239f5d0 add message 2025-03-15 19:43:17 +09:00
03d847c969 add bluesky post 2025-03-15 19:35:48 +09:00
ac532ddcb5 add twitter 2025-03-15 19:07:16 +09:00
aea31da9c0 Init
Just read from discord channel
2025-03-15 17:38:20 +09:00