l10n and bot command auto generation; v0.6.0

This commit is contained in:
2026-02-18 11:39:20 +03:00
parent bb51a0ecb1
commit b2bda02c0f
11 changed files with 182 additions and 102 deletions

View File

@@ -1,26 +1,59 @@
package laniakea
import "git.nix13.pw/scuroneko/laniakea/tgapi"
import (
"fmt"
"strings"
"git.nix13.pw/scuroneko/laniakea/tgapi"
)
func generateBotCommand(cmd Command) tgapi.BotCommand {
return tgapi.BotCommand{
Command: cmd.command, Description: cmd.command,
desc := cmd.command
if len(cmd.description) > 0 {
desc = cmd.description
}
var descArgs []string
for _, a := range cmd.args {
if a.required {
descArgs = append(descArgs, fmt.Sprintf("%s", a.text))
} else {
descArgs = append(descArgs, fmt.Sprintf("[%s]", a.text))
}
}
desc = fmt.Sprintf("%s. Usage: /%s %s", desc, cmd.command, strings.Join(descArgs, " "))
return tgapi.BotCommand{Command: cmd.command, Description: desc}
}
func generateBotCommandForPlugin(pl Plugin) []tgapi.BotCommand {
cmds := make([]tgapi.BotCommand, 0)
commands := make([]tgapi.BotCommand, 0)
for _, cmd := range pl.Commands {
cmds = append(cmds, generateBotCommand(cmd))
commands = append(commands, generateBotCommand(cmd))
}
return cmds
return commands
}
func (b *Bot) AutoGenerateCommands() error {
_, err := b.api.DeleteMyCommands(tgapi.DeleteMyCommandsP{})
if err != nil {
return err
}
commands := make([]tgapi.BotCommand, 0)
for _, pl := range b.plugins {
commands = append(commands, generateBotCommandForPlugin(pl)...)
}
_, err := b.api.SetMyCommands(tgapi.SetMyCommandsP{Commands: commands})
privateChatsScope := &tgapi.BotCommandScope{Type: tgapi.BotCommandScopePrivateType}
groupChatsScope := &tgapi.BotCommandScope{Type: tgapi.BotCommandScopeGroupType}
chatAdminsScope := &tgapi.BotCommandScope{Type: tgapi.BotCommandScopeAllChatAdministratorsType}
_, err = b.api.SetMyCommands(tgapi.SetMyCommandsP{Commands: commands, Scope: privateChatsScope})
if err != nil {
return err
}
_, err = b.api.SetMyCommands(tgapi.SetMyCommandsP{Commands: commands, Scope: groupChatsScope})
if err != nil {
return err
}
_, err = b.api.SetMyCommands(tgapi.SetMyCommandsP{Commands: commands, Scope: chatAdminsScope})
return err
}