Repository navigation
v0.1.0-alpha.1
Pre-releaseThe surface searchy needs to leave its third-party client. Nothing that
existed moved, so every bot already on tg is unaffected; the version says
0.1.0 rather than 0.0.2 because the additions are notable, and carries
alpha because no bot has yet run on them against live Telegram.
Added
-
Media sends.
SendPhoto,SendVideo,SendAudio,SendDocumentand
SendMediaGroup, plusEditMessageMediaandEditMessageReplyMarkup. A file
is anInputFile, and which of the three shapes it takes decides the request
on its own:InputFileStringfor afile_idor an https URL Telegram fetches
itself,InputFileLocalfor a path on the disk of a server started with
--local, andInputFileUploadfor bytes — only the last builds a multipart
body. A local path sent to Telegram's own endpoint is refused before the
request, because the failure it would otherwise produce ("wrong file
identifier") points nowhere near the cause. -
Inline mode.
AnswerInlineQuery, theInlineQueryand
ChosenInlineResultupdate kinds, and the two result cards the family uses:
InlineQueryResultPhotoandInlineQueryResultArticlewith
InputTextMessageContent. Answering with an empty result list is now
expressible, andresultsis always sent, because an omitted parameter is a
400 rather than "nothing found". -
LinkPreviewOptionsas a type,SendTextWithPreviewfor the one case where a
bot relays text whose author wanted the preview, andAnswerCallbackQueryURL
for a button that opens at.medeep link with no intermediate message. -
ChatAction*andChat*constants, so a bot branching on chat type or
announcing an upload no longer spells the strings out at every call site. -
InlineKeyboardButton.SwitchInlineQueryCurrentChat. It is a pointer because
the empty string is the useful value — "open inline search with nothing
typed" — andomitemptyon a plain string would drop exactly that button. -
editMessageMediaandsendMediaGroupare now probe-safe, so a bot that
pages a gallery or posts an album can refuse to start on a server that cannot.This is why the whole set landed: searchy was the one bot still on a
third-party library, and it stayed there because tg could not send a photo or
answer an inline query. Everything above is additive — no existing signature
moved.
Fixed
EditEphemeralMessageTextsuppresses Telegram's own link preview, which it
alone among the text sends did not. The About panel every bot is growing
carries a repository link, so editing one in place rendered a preview card
under it — in a group, where an ephemeral panel exists precisely to be the
quiet option.SendEphemeralMessagealready did this; the rich sends do not,
ephemeral or not, which is consistent between them and left alone here.
Changed
- One versioning and release document for the whole family.
docs/versioning.md
anddocs/releases.mdare now byte-identical across every Asterfield
repository apart from two clearly marked sections: this repository's own
version line, and the surface where a change here breaks something. They spell
out what each of the three numbers means, what the-alpha.Nsuffix counts,
when alpha becomes beta and when it is legitimate to skip to rc or run a
pre-release in production. - Pre-releases are now tagged on
dev, notmain. Only stable versions are
tagged onmain, on the merge commit fromdev, somainanswers exactly one
question: what is in production. The test bot runsdev, the production bot
runsmain.release.ymlenforces this and refuses a tag on the wrong branch.
Earlier pre-releases in this repository were tagged onmainunder the
previous rule; they are left as they are. - The document is explicit that tg's major number is not a judgement call: Go
gives it a hard meaning, since av2module has a different import path. A
change that removes or re-signs an exported function is major whatever it
feels like.
Added
release.yml. Every tag fromv0.0.1-alpha.1onward existed and was
fetchable through the module proxy, but none of them had a GitHub Release, so
the only way to learn what a bump changed was to open the changelog in another
tab. The workflow verifies the tag is onmain, re-runs gofmt, vet, the race
suite and govulncheck, and publishes the release from the matching changelog
section. The module proxy caches a tag permanently on first fetch, which is
why the branch check runs before anything else.