// +build !rm_basic_commands allcommands downloadcmd package main import ( "fmt" "strconv" ) func init() { command := Command{ Cmd: []string{"download", "d"}, Description: "$messageId $fileName - Download a file to user's downloadpath", Help: "", Exec: cmdDownloadFile, } RegisterCommand(command) } func cmdDownloadFile(cmd []string) { if len(cmd) < 2 { printInfo(fmt.Sprintf("%s%s $messageId $fileName - Download a file to user's downloadpath", config.Basics.CmdPrefix, cmd[0])) return } messageID, err := strconv.Atoi(cmd[1]) if err != nil { printError("There was an error converting your messageID to an int") return } chat := k.NewChat(channel) api, err := chat.ReadMessage(messageID) if err != nil { printError(fmt.Sprintf("There was an error pulling message %d", messageID)) return } if api.Result.Messages[0].Msg.Content.Type != "attachment" { printError("No attachment detected") return } var fileName string if len(cmd) == 3 { fileName = cmd[2] } else { fileName = api.Result.Messages[0].Msg.Content.Attachment.Object.Filename } _, err = chat.Download(messageID, fmt.Sprintf("%s/%s", config.Basics.DownloadPath, fileName)) channelName := config.Colors.Message.LinkKeybase.stylize(channel.Name) fileNameStylizied := config.Colors.Feed.File.stylize(fileName) if err != nil { printErrorF("There was an error downloading $TEXT from $TEXT", fileNameStylizied, channelName) } else { printInfoF("Downloaded $TEXT from $TEXT", fileNameStylizied, channelName) } }