Skip to content

Commit

Permalink
fix(message): return tg.UpdatesClass
Browse files Browse the repository at this point in the history
  • Loading branch information
tdakkota committed Mar 7, 2021
1 parent abee8f3 commit 3c14ce1
Show file tree
Hide file tree
Showing 43 changed files with 336 additions and 230 deletions.
3 changes: 2 additions & 1 deletion cmd/gotdecho/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ func run(ctx context.Context) error {
return nil
}

return sender.Reply(ctx, u).Text(ctx, m.Message)
_, err := sender.Reply(ctx, u).Text(ctx, m.Message)
return err
})
return nil
}, telegram.RunUntilCanceled)
Expand Down
2 changes: 1 addition & 1 deletion telegram/internal/e2etest/echo_bot.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ func (b EchoBot) handler(client *telegram.Client) tg.NewMessageHandler {
zap.String("username", user.Username),
)

if err := sender.Peer(user.AsInputPeer()).Text(ctx, m.Message); err != nil {
if _, err := sender.Peer(user.AsInputPeer()).Text(ctx, m.Message); err != nil {
return xerrors.Errorf("send message: %w", err)
}
return nil
Expand Down
2 changes: 1 addition & 1 deletion telegram/internal/e2etest/terentyev.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ func (u User) Run(ctx context.Context) error {
for _, line := range u.text {
time.Sleep(2 * time.Second)

err = sender.Peer(peer).Text(ctx, line)
_, err = sender.Peer(peer).Text(ctx, line)
if flood, err := helpers.FloodWait(ctx, err); err != nil {
if flood {
continue
Expand Down
7 changes: 5 additions & 2 deletions telegram/message/audio.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,14 @@ func Voice(file tg.InputFileClass) *AudioDocumentBuilder {
}

// Audio sends audio file.
func (b *Builder) Audio(ctx context.Context, file tg.InputFileClass, caption ...StyledTextOption) error {
func (b *Builder) Audio(
ctx context.Context,
file tg.InputFileClass, caption ...StyledTextOption,
) (tg.UpdatesClass, error) {
return b.Media(ctx, Audio(file, caption...))
}

// Voice sends voice message.
func (b *Builder) Voice(ctx context.Context, file tg.InputFileClass) error {
func (b *Builder) Voice(ctx context.Context, file tg.InputFileClass) (tg.UpdatesClass, error) {
return b.Media(ctx, Voice(file))
}
6 changes: 3 additions & 3 deletions telegram/message/audio_example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,19 +32,19 @@ func sendAudio(ctx context.Context) error {
r := sender.Resolve("@durovschat")

// Sends audio to the @durovschat.
if err := r.Audio(ctx, f); err != nil {
if _, err := r.Audio(ctx, f); err != nil {
return err
}

// Sends audio with title to the @durovschat.
if err := r.Media(ctx, message.Audio(f).
if _, err := r.Media(ctx, message.Audio(f).
Performer("Yegor Letov").
Title("Everything is going according to plan")); err != nil {
return err
}

// Sends voice message to the @durovschat.
if err := r.Voice(ctx, f); err != nil {
if _, err := r.Voice(ctx, f); err != nil {
return err
}

Expand Down
9 changes: 6 additions & 3 deletions telegram/message/audio_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,14 @@ func TestVoice(t *testing.T) {
},
}, mock)

mock.NoError(sender.Self().Voice(ctx, file))
mock.NoError(sender.Self().Media(ctx, Audio(file).
_, err := sender.Self().Voice(ctx, file)
mock.NoError(err)

_, err = sender.Self().Media(ctx, Audio(file).
Duration(10*time.Second).
Title("Big Iron").
Performer("Marty Robbins").
Waveform([]byte{10}),
))
)
mock.NoError(err)
}
3 changes: 2 additions & 1 deletion telegram/message/contact_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,6 @@ func TestContact(t *testing.T) {
expectSendMediaAndText(&contact, mock, "че с деньгами?", &tg.MessageEntityBold{
Length: utf8.RuneCountInString("че с деньгами?"),
})
mock.NoError(sender.Self().Media(ctx, Contact(contact, Bold("че с деньгами?"))))
_, err := sender.Self().Media(ctx, Contact(contact, Bold("че с деньгами?")))
mock.NoError(err)
}
6 changes: 3 additions & 3 deletions telegram/message/dice.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,16 +38,16 @@ func Basketball() MediaOption {
}

// Dice sends a dice animated sticker.
func (b *Builder) Dice(ctx context.Context) error {
func (b *Builder) Dice(ctx context.Context) (tg.UpdatesClass, error) {
return b.Media(ctx, Dice())
}

// Darts sends a darts animated sticker.
func (b *Builder) Darts(ctx context.Context) error {
func (b *Builder) Darts(ctx context.Context) (tg.UpdatesClass, error) {
return b.Media(ctx, Darts())
}

// Basketball sends a basketball animated sticker.
func (b *Builder) Basketball(ctx context.Context) error {
func (b *Builder) Basketball(ctx context.Context) (tg.UpdatesClass, error) {
return b.Media(ctx, Basketball())
}
4 changes: 2 additions & 2 deletions telegram/message/dice_example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@ func sendDice(ctx context.Context) error {
sender := message.NewSender(tg.NewClient(client))

// Sends dice "🎲" to the @durovschat.
if err := sender.Resolve("@durovschat").Dice(ctx); err != nil {
if _, err := sender.Resolve("@durovschat").Dice(ctx); err != nil {
return err
}

// Sends darts "🎯" to the @durovschat.
if err := sender.Resolve("https://t.me/durovschat").Darts(ctx); err != nil {
if _, err := sender.Resolve("https://t.me/durovschat").Darts(ctx); err != nil {
return err
}

Expand Down
9 changes: 6 additions & 3 deletions telegram/message/dice_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@ func TestMediaDice(t *testing.T) {
expectDice(DartsEmoticon)
expectDice(BasketballEmoticon)

mock.NoError(sender.Self().Dice(ctx))
mock.NoError(sender.Self().Darts(ctx))
mock.NoError(sender.Self().Basketball(ctx))
_, err := sender.Self().Dice(ctx)
mock.NoError(err)
_, err = sender.Self().Darts(ctx)
mock.NoError(err)
_, err = sender.Self().Basketball(ctx)
mock.NoError(err)
}
13 changes: 7 additions & 6 deletions telegram/message/document.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,9 @@ func Document(doc FileLocation, caption ...StyledTextOption) *DocumentBuilder {
}

// Document sends document.
func (b *Builder) Document(ctx context.Context, file FileLocation, caption ...StyledTextOption) error {
func (b *Builder) Document(
ctx context.Context, file FileLocation, caption ...StyledTextOption,
) (tg.UpdatesClass, error) {
return b.Media(ctx, Document(file, caption...))
}

Expand Down Expand Up @@ -139,10 +141,9 @@ func DocumentByHash(

// DocumentByHash finds document by hash and sends as attachment.
func (b *Builder) DocumentByHash(
ctx context.Context,
hash []byte, size int, mime string,
ctx context.Context, hash []byte, size int, mime string,
caption ...StyledTextOption,
) error {
) (tg.UpdatesClass, error) {
return b.Media(ctx, DocumentByHash(hash, size, mime, caption...))
}

Expand Down Expand Up @@ -179,7 +180,7 @@ func DocumentExternal(url string, caption ...StyledTextOption) *DocumentExternal
}

// DocumentExternal sends document attachment that will be downloaded by the Telegram servers.
func (b *Builder) DocumentExternal(ctx context.Context, url string, caption ...StyledTextOption) error {
func (b *Builder) DocumentExternal(ctx context.Context, url string, caption ...StyledTextOption) (tg.UpdatesClass, error) {
return b.Media(ctx, DocumentExternal(url, caption...))
}

Expand Down Expand Up @@ -289,6 +290,6 @@ func File(file tg.InputFileClass, caption ...StyledTextOption) *UploadedDocument
}

// File sends uploaded file as document and forces it to be used as plain file, not media.
func (b *Builder) File(ctx context.Context, file tg.InputFileClass, caption ...StyledTextOption) error {
func (b *Builder) File(ctx context.Context, file tg.InputFileClass, caption ...StyledTextOption) (tg.UpdatesClass, error) {
return b.Media(ctx, File(file, caption...))
}
33 changes: 21 additions & 12 deletions telegram/message/document_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,11 @@ func TestDocument(t *testing.T) {
Query: "10",
}, mock)

mock.NoError(sender.Self().Document(ctx, loc))
mock.NoError(sender.Self().Media(ctx, Document(loc).
TTL(10*time.Second).Query("10")))
_, err := sender.Self().Document(ctx, loc)
mock.NoError(err)
_, err = sender.Self().Media(ctx, Document(loc).
TTL(10*time.Second).Query("10"))
mock.NoError(err)
}

func TestDocumentExternal(t *testing.T) {
Expand All @@ -37,8 +39,10 @@ func TestDocumentExternal(t *testing.T) {
TTLSeconds: 10,
}, mock)

mock.NoError(sender.Self().DocumentExternal(ctx, "https://google.com"))
mock.NoError(sender.Self().Media(ctx, DocumentExternal("https://github.com").TTL(10*time.Second)))
_, err := sender.Self().DocumentExternal(ctx, "https://google.com")
mock.NoError(err)
_, err = sender.Self().Media(ctx, DocumentExternal("https://github.com").TTL(10*time.Second))
mock.NoError(err)
}

func TestDocumentByHash(t *testing.T) {
Expand All @@ -61,7 +65,8 @@ func TestDocumentByHash(t *testing.T) {
MimeType: mime,
}).ThenResult(doc)
expectSendMedia(&tg.InputMediaDocument{ID: loc}, mock)
mock.NoError(sender.Self().DocumentByHash(ctx, hash, size, mime))
_, err := sender.Self().DocumentByHash(ctx, hash, size, mime)
mock.NoError(err)

mock.ExpectCall(&tg.MessagesGetDocumentByHashRequest{
SHA256: hash,
Expand All @@ -73,8 +78,9 @@ func TestDocumentByHash(t *testing.T) {
TTLSeconds: 10,
Query: "10",
}, mock)
mock.NoError(sender.Self().Media(ctx, DocumentByHash(hash, size, mime).
TTL(10*time.Second).Query("10")))
_, err = sender.Self().Media(ctx, DocumentByHash(hash, size, mime).
TTL(10*time.Second).Query("10"))
mock.NoError(err)
}

func TestUploadedDocument(t *testing.T) {
Expand Down Expand Up @@ -109,8 +115,11 @@ func TestUploadedDocument(t *testing.T) {
},
}, mock)

mock.NoError(sender.Self().File(ctx, file))
mock.NoError(sender.Self().Media(ctx, UploadedDocument(file).TTL(10*time.Second).
Filename("abc.jpg")))
mock.NoError(sender.Self().Media(ctx, UploadedDocument(file).Thumb(file).Stickers(loc).HasStickers()))
_, err := sender.Self().File(ctx, file)
mock.NoError(err)
_, err = sender.Self().Media(ctx, UploadedDocument(file).TTL(10*time.Second).
Filename("abc.jpg"))
mock.NoError(err)
_, err = sender.Self().Media(ctx, UploadedDocument(file).Thumb(file).Stickers(loc).HasStickers())
mock.NoError(err)
}
41 changes: 23 additions & 18 deletions telegram/message/edit.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,58 +31,63 @@ func (b *EditMessageBuilder) editTextRequest(
}

// Text edits message using given message.
func (b *EditMessageBuilder) Text(ctx context.Context, msg string) error {
func (b *EditMessageBuilder) Text(ctx context.Context, msg string) (tg.UpdatesClass, error) {
p, err := b.builder.peer(ctx)
if err != nil {
return xerrors.Errorf("peer: %w", err)
return nil, xerrors.Errorf("peer: %w", err)
}

if err := b.builder.sender.editMessage(ctx,
b.editTextRequest(p, msg, nil)); err != nil {
return xerrors.Errorf("edit text message: %w", err)
upd, err := b.builder.sender.editMessage(ctx, b.editTextRequest(p, msg, nil))
if err != nil {
return nil, xerrors.Errorf("edit styled text message: %w", err)
}

return nil
return upd, nil
}

// StyledText edits message using given message.
func (b *EditMessageBuilder) StyledText(ctx context.Context, text StyledTextOption, texts ...StyledTextOption) error {
func (b *EditMessageBuilder) StyledText(
ctx context.Context,
text StyledTextOption, texts ...StyledTextOption,
) (tg.UpdatesClass, error) {
p, err := b.builder.peer(ctx)
if err != nil {
return xerrors.Errorf("peer: %w", err)
return nil, xerrors.Errorf("peer: %w", err)
}

tb := textBuilder{}
tb.Perform(text, texts...)
msg, entities := tb.Complete()

if err := b.builder.sender.editMessage(ctx,
b.editTextRequest(p, msg, entities)); err != nil {
return xerrors.Errorf("edit styled text message: %w", err)
upd, err := b.builder.sender.editMessage(ctx, b.editTextRequest(p, msg, entities))
if err != nil {
return nil, xerrors.Errorf("edit styled text message: %w", err)
}

return nil
return upd, nil
}

// Media edits message using given media and text.
func (b *EditMessageBuilder) Media(ctx context.Context, media MediaOption) error {
func (b *EditMessageBuilder) Media(ctx context.Context, media MediaOption) (tg.UpdatesClass, error) {
p, err := b.builder.peer(ctx)
if err != nil {
return xerrors.Errorf("peer: %w", err)
return nil, xerrors.Errorf("peer: %w", err)
}

attachment, err := b.builder.applySingleMedia(ctx, p, media)
if err != nil {
return err
return nil, err
}

req := b.editTextRequest(p, attachment.Message, attachment.Entities)
req.Media = attachment.Media
if err := b.builder.sender.editMessage(ctx, req); err != nil {
return xerrors.Errorf("send media: %w", err)

upd, err := b.builder.sender.editMessage(ctx, req)
if err != nil {
return nil, xerrors.Errorf("send media: %w", err)
}

return nil
return upd, nil
}

// Edit edits message by ID.
Expand Down
18 changes: 12 additions & 6 deletions telegram/message/edit_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,17 @@ func TestEditMessageBuilder_Text(t *testing.T) {
Message: msg,
}).ThenResult(&tg.Updates{})

mock.NoError(sender.Self().Edit(10).Text(ctx, msg))
_, err := sender.Self().Edit(10).Text(ctx, msg)
mock.NoError(err)

mock.ExpectCall(&tg.MessagesEditMessageRequest{
Peer: &tg.InputPeerSelf{},
ID: 10,
Message: msg,
}).ThenRPCErr(testRPCError())

mock.Error(sender.Self().Edit(10).Text(ctx, msg))
_, err = sender.Self().Edit(10).Text(ctx, msg)
mock.Error(err)
}

func TestEditMessageBuilder_StyledText(t *testing.T) {
Expand All @@ -46,7 +48,8 @@ func TestEditMessageBuilder_StyledText(t *testing.T) {
},
}).ThenResult(&tg.Updates{})

mock.NoError(sender.Self().Edit(10).StyledText(ctx, Bold(msg)))
_, err := sender.Self().Edit(10).StyledText(ctx, Bold(msg))
mock.NoError(err)

mock.ExpectCall(&tg.MessagesEditMessageRequest{
Peer: &tg.InputPeerSelf{},
Expand All @@ -59,7 +62,8 @@ func TestEditMessageBuilder_StyledText(t *testing.T) {
},
}).ThenRPCErr(testRPCError())

mock.Error(sender.Self().Edit(10).StyledText(ctx, Bold(msg)))
_, err = sender.Self().Edit(10).StyledText(ctx, Bold(msg))
mock.Error(err)
}

func TestEditMessageBuilder_Media(t *testing.T) {
Expand All @@ -77,7 +81,8 @@ func TestEditMessageBuilder_Media(t *testing.T) {
},
}).ThenResult(&tg.Updates{})

mock.NoError(sender.Self().Edit(10).Media(ctx, Photo(loc)))
_, err := sender.Self().Edit(10).Media(ctx, Photo(loc))
mock.NoError(err)

mock.ExpectCall(&tg.MessagesEditMessageRequest{
Peer: &tg.InputPeerSelf{},
Expand All @@ -87,5 +92,6 @@ func TestEditMessageBuilder_Media(t *testing.T) {
},
}).ThenRPCErr(testRPCError())

mock.Error(sender.Self().Edit(10).Media(ctx, Photo(loc)))
_, err = sender.Self().Edit(10).Media(ctx, Photo(loc))
mock.Error(err)
}

0 comments on commit 3c14ce1

Please sign in to comment.