diff --git a/patches/add-item/add-item.go b/patches/add-item/add-item.go index bf9baec5..f549ca3a 100644 --- a/patches/add-item/add-item.go +++ b/patches/add-item/add-item.go @@ -12,7 +12,7 @@ var itemID string var quantity int func init() { - flag.StringVar(&nick, "nick", "", "Name of the user.") + flag.StringVar(&nick, "nick", "", "Name of the user. Leave it out to target all users.") flag.StringVar(&itemID, "item", "", "ID of the item.") flag.IntVar(&quantity, "q", 1, "Item quantity.") flag.Parse() @@ -21,23 +21,29 @@ func init() { func main() { defer arn.Node.Close() - if nick == "" || itemID == "" { + if itemID == "" { color.Red("Missing parameters") return } - user, err := arn.GetUserByNick(nick) + // Check that the item exists + _, err := arn.GetShopItem(itemID) arn.PanicOnError(err) - item, err := arn.GetShopItem(itemID) - arn.PanicOnError(err) - - if item == nil { - color.Red("Unknown item") - return + if nick != "" { + // Single user + user, err := arn.GetUserByNick(nick) + arn.PanicOnError(err) + addItemToUser(user) + } else { + // All users + for user := range arn.StreamUsers() { + addItemToUser(user) + } } +} - // Add to user inventory +func addItemToUser(user *arn.User) { inventory := user.Inventory() inventory.AddItem(itemID, uint(quantity)) inventory.Save()