diff --git a/cli/commands/help.go b/cli/commands/help.go new file mode 100644 index 0000000..cacfcaa --- /dev/null +++ b/cli/commands/help.go @@ -0,0 +1,59 @@ +package commands + +import ( + "fmt" + "git.dragon-labs.de/alphyron/group_helper/cli" + tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api" + "strings" +) + +type helpCommand struct { + commandManager *cli.CommandManager +} + +func NewHelpCommand(commandManager *cli.CommandManager) cli.Command { + return &helpCommand{commandManager: commandManager} +} + +func (h helpCommand) GetUsage() string { + return "/help" +} + +func (h helpCommand) GetCommand() string { + return "/help" +} + +func (h helpCommand) GetDescription() string { + return "Information about all commands" +} + +func (h helpCommand) ExecuteCommand(bot *tgbotapi.BotAPI, update *tgbotapi.Update) (bool, error) { + var builder strings.Builder + + builder.WriteString("All supported Commands:\n") + for _, cmd := range h.commandManager.Commands { + builder.WriteString(fmt.Sprintf("%s - %s\n", cmd.GetUsage(), cmd.GetDescription())) + } + + msg := tgbotapi.NewMessage(update.Message.Chat.ID, builder.String()) + msg.ParseMode = "Markdown" + + _, err := bot.Send(msg) + + if err != nil { + return false, err + } + return true, nil +} + +func (h helpCommand) AllowChatType(chat *tgbotapi.Chat) bool { + return true +} + +func (h helpCommand) AllowMember(member *tgbotapi.ChatMember) bool { + return true +} + +func (h helpCommand) AllowEveryMember() bool { + return true +} diff --git a/main.go b/main.go index b205ab1..d08546e 100644 --- a/main.go +++ b/main.go @@ -69,6 +69,7 @@ func InitialCommandManager(bot *tgbotapi.BotAPI) *cli.CommandManager { } cm.RegisterCommand(commands.NewInfoCommand()) + cm.RegisterCommand(commands.NewHelpCommand(cm)) return cm }