Telegram Messages
Last updated
This page covers sending text, deleting messages, and uploading files, photos, and voice with
core/telegram.Text
- msg, err := bot.Send(ctx, chatID, replyTo, "*bold*", telegram.WithSendType(telegram.TypeMarkdown))
| Parameter | Meaning |
|---|---|
replyTo int | > 0 sends the message as a reply to that message ID; 0 sends a standalone message |
opts ...MessageOption | WithSendType(TypeMarkdown) → MarkdownV2, WithSendType(TypeHTML) → HTML; omit for plain text |
With MarkdownV2 you must escape Telegram's reserved characters yourself; the library passes the text through unchanged.
Delete(ctx, chatID, msgID) deletes one message and returns the API error unchanged.Documents, video, audio
- msg, err := bot.SendFile(ctx, chatID, telegram.TypeDocument, "./report.pdf", "Q3 report")
FileType | API |
|---|---|
TypeDocument | sendDocument |
TypeVideo | sendVideo |
TypeAudio | sendAudio |
The file is opened with
os.Open and streamed; the uploaded name is filepath.Base(path). Only the first caption argument is used. An empty path returns path is required; any other FileType value returns unknown file type.Photos and albums
- msgs, err := bot.SendPhoto(ctx, chatID, []string{"a.jpg", "b.jpg"}, "Trip")
Empty entries are dropped first. One remaining path uses
sendPhoto; 2 to 10 paths use sendMediaGroup and Telegram shows them as one album with the caption on the first photo. Zero or more than 10 paths return an error. The result is one *models.Message per photo.Voice
- msg, err := bot.SendVoice(ctx, chatID, "./reply.ogg", "caption")
SendVoice uploads an existing file. Telegram renders it as a voice bubble when the file is OGG encoded with OPUS; produce that file yourself (for example with a TTS service and ffmpeg). There is no replyTo parameter.Any trailing strings are captions. Code written for v0.4.x,
SendVoice(ctx, chatID, text, apiKey), still compiles against v0.5.0 but uploads text as a file path and posts apiKey as the caption. See Removed APIs.