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() {