Anpassung mit Lager-Location
All checks were successful
release-tag / release-image (push) Successful in 2m6s
All checks were successful
release-tag / release-image (push) Successful in 2m6s
This commit is contained in:
@@ -21,4 +21,4 @@ DISCORD_ADMIN_ROLE_IDS=123456789012345678,234567890123456789 # 15098193051880039
|
||||
# Comma-separated role IDs. Team role can see internal orders, accept/decline, check warehouse.
|
||||
DISCORD_TEAM_ROLE_IDS=345678901234567890 # 1509819434330755233
|
||||
|
||||
DATABASE_PATH=orders.db
|
||||
DATABASE_PATH=/data/orders.db
|
||||
|
||||
10
README.md
10
README.md
@@ -114,6 +114,14 @@ Fügt Bestand hinzu oder setzt ihn absolut.
|
||||
/lager_add ware:Gold qualitaet:900 menge:100 einheit:SCU ort:Orison modus:setzen
|
||||
```
|
||||
|
||||
`ort` ist der interne Lagerort. Er wird nur in Team-/Admin-Ausgaben, der internen Lagerprüfung und im Auditlog angezeigt. Öffentliche Auftragsposts und Endnutzer-DMs enthalten keine Lagerorte.
|
||||
|
||||
Das Auditlog zeigt Bestandsänderungen mit altem und neuem Wert, z. B.:
|
||||
|
||||
```text
|
||||
Lager geändert durch b1tk1ll3r: P4-AR Q725 Stück @ Baijini Point: 0 → 2
|
||||
```
|
||||
|
||||
### `/lager_remove`
|
||||
|
||||
Reduziert Bestand. Der Bot verhindert negative Bestände.
|
||||
@@ -122,6 +130,8 @@ Reduziert Bestand. Der Bot verhindert negative Bestände.
|
||||
/lager_remove ware:Gold qualitaet:900 menge:10 einheit:SCU ort:Orison
|
||||
```
|
||||
|
||||
Auch hier bezieht sich `ort` auf genau diese Lagerposition. Wird kein Ort angegeben, wird der Bestand ohne Lagerort geführt.
|
||||
|
||||
### `/lager_liste`
|
||||
|
||||
Zeigt interne Lagerbestände ephemeral an.
|
||||
|
||||
21
discord.go
21
discord.go
@@ -23,7 +23,7 @@ func NewBot(cfg Config, store *Store) (*Bot, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
dg.Identify.Intents = discordgo.IntentsGuilds | discordgo.IntentsGuildMessages | discordgo.IntentsGuildMembers | discordgo.IntentsDirectMessages
|
||||
dg.Identify.Intents = discordgo.IntentsGuilds | discordgo.IntentsDirectMessages
|
||||
b := &Bot{cfg: cfg, store: store, dg: dg}
|
||||
dg.AddHandler(b.onReady)
|
||||
dg.AddHandler(b.onInteraction)
|
||||
@@ -358,12 +358,29 @@ func (b *Bot) cmdInventoryAdd(s *discordgo.Session, i *discordgo.InteractionCrea
|
||||
b.replyEphemeral(s, i, "Ware darf nicht leer sein.")
|
||||
return
|
||||
}
|
||||
oldAmount := 0.0
|
||||
if existing, err := b.store.GetInventoryByKey(normalizeName(item.Name), item.Quality, item.QuantityUnit, item.Location); err == nil {
|
||||
oldAmount = existing.QuantityAmount
|
||||
} else if !errors.Is(err, sql.ErrNoRows) {
|
||||
b.replyEphemeral(s, i, "Lager konnte vor Änderung nicht gelesen werden: "+err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
updated, err := b.store.UpsertInventory(item, mode != "set" || remove)
|
||||
if err != nil {
|
||||
b.replyEphemeral(s, i, "Lager konnte nicht aktualisiert werden: "+err.Error())
|
||||
return
|
||||
}
|
||||
b.audit(fmt.Sprintf("Lager geändert durch %s: %s Q%d = %s %s @ %s", userString(i), updated.Name, updated.Quality, formatAmount(updated.QuantityAmount), updated.QuantityUnit, updated.Location))
|
||||
b.audit(fmt.Sprintf(
|
||||
"Lager geändert durch %s: %s Q%d %s%s: %s → %s",
|
||||
userString(i),
|
||||
updated.Name,
|
||||
updated.Quality,
|
||||
updated.QuantityUnit,
|
||||
locationSuffix(updated.Location),
|
||||
formatAmount(oldAmount),
|
||||
formatAmount(updated.QuantityAmount),
|
||||
))
|
||||
b.replyEphemeral(s, i, fmt.Sprintf("Lager aktualisiert: %s Q%d — %s %s%s", updated.Name, updated.Quality, formatAmount(updated.QuantityAmount), updated.QuantityUnit, locationSuffix(updated.Location)))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user