diff --git a/cmd/test/main.go b/cmd/test/main.go index 485d78b..4ca595b 100644 --- a/cmd/test/main.go +++ b/cmd/test/main.go @@ -271,51 +271,45 @@ WithUsage(tg.Func(func(c *tg.Context){ })).WithPreStart(tg.Func(func(c *tg.Context){ c.Sendf("Please, use /start ") })).WithCommands( - tg.NewCommand("info"). + tg.NewCommand("info", "info desc"). ActionFunc(func(c *tg.Context){ c.SendfHTML(`cockcock die`) }), - tg.NewCommand("start"). - Desc( - "start or restart the bot or move to the start screen", - ).Go("/"), - tg.NewCommand("hello"). - Desc("sends the 'Hello, World!' message back"). + tg.NewCommand( + "start", + "start or restart the bot or move to the start screen", + ).Go("/"), + tg.NewCommand("hello", "sends the 'Hello, World!' message back"). ActionFunc(func(c *tg.Context) { c.Sendf("Hello, World!") }), - tg.NewCommand("read"). - Desc("reads a string and sends it back"). + tg.NewCommand("read", "reads a string and sends it back"). WithWidget( tg.Func(func(c *tg.Context){ str := c.ReadString("Type a string and I will send it back") c.Sendf2("You typed `%s`", str) }), ), - tg.NewCommand("image"). - Desc("sends a sample image"). + tg.NewCommand("image", "sends a sample image"). ActionFunc(func(c *tg.Context) { img := tg.NewFile("media/cat.jpg").Image().Caption("A cat!") c.Send(img) }), - tg.NewCommand("botname"). - Desc("get the bot name"). + tg.NewCommand("botname", "get the bot name"). WithAction(tg.Func(func(c *tg.Context) { bd := c.Bot.Data.(*BotData) c.Sendf("My name is %q", bd.Name) })), - tg.NewCommand("dynamic"). - Desc("check of the dynamic work"). + tg.NewCommand("dynamic", "check of the dynamic work"). WithWidget(tg.Func(func(c *tg.Context){ })), - tg.NewCommand("history"). - Desc("print go history"). + tg.NewCommand("history", "print go history"). WithAction(tg.Func(func(c *tg.Context){ c.Sendf("%q", c.History()) })), - tg.NewCommand("washington"). - Desc("Send location of the Washington"). + tg.NewCommand("washington", "send location of the Washington"). WithAction(tg.Func(func(c *tg.Context){ + c.Sendf("Washington location") c.Send( tg.NewMessage("").Location( 47.751076, -120.740135, diff --git a/tg/bot.go b/tg/bot.go index 210e02f..72240e2 100644 --- a/tg/bot.go +++ b/tg/bot.go @@ -117,13 +117,13 @@ func (bot *Bot) DeleteCommands() { func (bot *Bot) SetCommands( scope tgbotapi.BotCommandScope, cmdMap CommandMap, -) { +) error { // First the private commands. names := []string{} for name := range cmdMap { names = append(names, string(name)) } - sort.Strings([]string(names)) + sort.Strings(names) cmds := []*Command{} for _, name := range names { @@ -144,7 +144,11 @@ func (bot *Bot) SetCommands( botCmds..., ) - bot.Api.Request(cfg) + _, err := bot.Api.Request(cfg) + if err != nil { + return err + } + return nil } // Run the bot with the Behaviour. diff --git a/tg/command.go b/tg/command.go index 41fe997..b783327 100644 --- a/tg/command.go +++ b/tg/command.go @@ -24,9 +24,13 @@ type Command struct { } type CommandMap map[CommandName]*Command -func NewCommand(name CommandName) *Command { +func NewCommand(name CommandName, desc string) *Command { + if name == "" || desc == "" { + panic("name and description cannot be an empty string") + } return &Command{ Name: name, + Description: desc, } } @@ -55,11 +59,6 @@ func (c *Command) ToApi() tgbotapi.BotCommand { return ret } -func (c *Command) Desc(desc string) *Command { - c.Description = desc - return c -} - func (c *Command) Go(pth Path, args ...any) *Command { return c.WithAction(ScreenGo{ Path: pth, @@ -139,10 +138,13 @@ func (compo *CommandCompo) Serve(c *Context) { commanders[k] = v }*/ c.Bot.DeleteCommands() - c.Bot.SetCommands( - tgbotapi.NewBotCommandScopeAllPrivateChats(), + err := c.Bot.SetCommands( + tgbotapi.NewBotCommandScopeChat(c.Session.Id.ToApi()), compo.Commands, ) + if err != nil { + c.Sendf("error: %q", err) + } var cmdUpdates *UpdateChan for u := range c.Input() {