Skip to content

Commit 45a957e

Browse files
authored
Merge pull request #10 from rusq/picklist-sender
Fix picklist message printing and introduce PrinterContext
2 parents bc6be74 + 3e515b5 commit 45a957e

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

picklist.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ func (p *Picklist) Handler(c tb.Context) error {
136136
return nil
137137
}
138138
ctrlCtx := WithController(context.Background(), p)
139-
values, err := p.vFn(ctrlCtx, m.Sender)
139+
values, err := p.vFn(ctrlCtx, c.Sender())
140140
if err != nil {
141141
p.processErr(c, err)
142142
return err
@@ -146,7 +146,7 @@ func (p *Picklist) Handler(c tb.Context) error {
146146
markup := p.inlineMarkup(c, values)
147147
// send message with markup
148148
pr := Printer(c.Sender().LanguageCode, p.lang)
149-
text, err := p.textFn(WithController(context.Background(), p), m.Sender)
149+
text, err := p.textFn(WithController(context.Background(), p), c.Sender())
150150
if err != nil {
151151
c.Send(pr.Sprintf(MsgUnexpected))
152152
return fmt.Errorf("error while generating text for controller: %s: %w", p.name, err)
@@ -205,8 +205,7 @@ func (p *Picklist) Callback(c tb.Context) error {
205205
}
206206

207207
func (p *Picklist) editMsg(ctx context.Context, c tb.Context) bool {
208-
cb := c.Callback()
209-
text, err := p.textFn(WithController(ctx, p), cb.Sender)
208+
text, err := p.textFn(WithController(ctx, p), c.Sender())
210209
if err != nil {
211210
lg.Println(err)
212211
trace.Log(ctx, "textFn", err.Error())
@@ -228,7 +227,7 @@ func (p *Picklist) editMsg(ctx context.Context, c tb.Context) bool {
228227
return true
229228
}
230229

231-
values, err := p.vFn(WithController(ctx, p), cb.Sender)
230+
values, err := p.vFn(WithController(ctx, p), c.Sender())
232231
if err != nil {
233232
trace.Log(ctx, "vFn", err.Error())
234233
p.processErr(c, err)
@@ -237,7 +236,7 @@ func (p *Picklist) editMsg(ctx context.Context, c tb.Context) bool {
237236

238237
markup := p.inlineMarkup(c, values)
239238
if err := c.Edit(
240-
p.format(cb.Sender, text),
239+
p.format(c.Sender(), text),
241240
&tb.SendOptions{ParseMode: tb.ModeHTML, ReplyMarkup: markup},
242241
); err != nil {
243242
lg.Println(err)
@@ -275,7 +274,7 @@ func (p *Picklist) processErr(c tb.Context, err error) {
275274
} else {
276275
m = c.Message()
277276
}
278-
pr := Printer(m.Sender.LanguageCode, p.lang)
277+
pr := Printer(c.Sender().LanguageCode, p.lang)
279278
lg.Println(err)
280279
if p.errFn == nil {
281280
c.Send(pr.Sprintf(MsgUnexpected))

strings.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package tbcomctl
33
import (
44
"golang.org/x/text/language"
55
"golang.org/x/text/message"
6+
tb "gopkg.in/tucnak/telebot.v3"
67
)
78

89
func Nvlstring(s string, ss ...string) string {
@@ -17,6 +18,14 @@ func Nvlstring(s string, ss ...string) string {
1718
return ""
1819
}
1920

21+
// PrinterContext returns the Message Printer set to the language of the sender.
22+
// It is a convenience wrapper around Printer.
23+
func PrinterContext(c tb.Context, fallback ...string) *message.Printer {
24+
return Printer(c.Sender().LanguageCode, fallback...)
25+
}
26+
27+
// Printer returns the Message Printer for the desired lang. If the lang is not
28+
// valid, the fallback languages will be used, if set.
2029
func Printer(lang string, fallback ...string) *message.Printer {
2130
tag, err := language.Parse(lang)
2231
if err != nil {

0 commit comments

Comments
 (0)