You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

131 lines
3.2 KiB

package message
import (
"time"
"github.com/gotd/td/telegram/message/markup"
"github.com/gotd/td/telegram/message/peer"
"github.com/gotd/td/tg"
)
type peerPromise = peer.Promise
// CloneBuilder returns copy of message Builder inside RequestBuilder.
func (b *RequestBuilder) CloneBuilder() *Builder {
return b.Builder.copy()
}
// Builder is a message builder.
type Builder struct {
// Sender to use.
sender *Sender
// The destination where the message will be sent.
peer peerPromise
// Set this flag to disable generation of the webpage preview.
noWebpage bool
// Send this message silently (no notifications for the receivers).
silent bool
// Send this message as background message.
background bool
// Clear the draft field.
clearDraft bool
// noForwards whether that sent message cannot be forwarded.
noForwards bool
// The message ID to which this message will reply to.
replyToMsgID int
// Reply markup for sending bot buttons.
replyMarkup tg.ReplyMarkupClass
// Scheduled message date for scheduled messages.
scheduleDate int
// sendAs sets peer to send message as it.
sendAs tg.InputPeerClass
}
func (b *Builder) copy() *Builder {
if b == nil {
return nil
}
r := *b
return &r
}
// Silent sets flag to send this message silently (no notifications for the receivers).
func (b *Builder) Silent() *Builder {
b.silent = true
return b
}
// Background sets flag to send this message as background message.
func (b *Builder) Background() *Builder {
b.background = true
return b
}
// Clear sets flag to clear the draft field.
func (b *Builder) Clear() *Builder {
b.clearDraft = true
return b
}
// Reply sets message ID to reply.
func (b *Builder) Reply(id int) *Builder {
b.replyToMsgID = id
return b
}
// ReplyMsg sets message to reply.
func (b *Builder) ReplyMsg(msg tg.MessageClass) *Builder {
return b.Reply(msg.GetID())
}
// ScheduleTS sets scheduled message timestamp for scheduled messages.
func (b *Builder) ScheduleTS(date int) *Builder {
b.scheduleDate = date
return b
}
// Schedule sets scheduled message date for scheduled messages.
func (b *Builder) Schedule(date time.Time) *Builder {
return b.ScheduleTS(int(date.Unix()))
}
// NoWebpage sets flag to disable generation of the webpage preview.
func (b *Builder) NoWebpage() *Builder {
b.noWebpage = true
return b
}
// NoForwards whether that sent message cannot be forwarded.
//
// See https://telegram.org/blog/protected-content-delete-by-date-and-more#protected-content-in-groups-and-channels.
func (b *Builder) NoForwards() *Builder {
b.noForwards = true
return b
}
// Markup sets reply markup for sending bot buttons.
//
// NB: markup will not be used, if you send multiple media attachments.
func (b *Builder) Markup(m tg.ReplyMarkupClass) *Builder {
b.replyMarkup = m
return b
}
// Row sets single row keyboard markup for sending bot buttons.
//
// NB: markup will not be used, if you send multiple media attachments.
func (b *Builder) Row(buttons ...tg.KeyboardButtonClass) *Builder {
return b.Markup(markup.InlineRow(buttons...))
}
// SendAs sets peer to send as.
//
// See https://telegram.org/blog/protected-content-delete-by-date-and-more#anonymous-posting-in-public-groups.
func (b *Builder) SendAs(p tg.InputPeerClass) *Builder {
b.sendAs = p
return b
}