diff --git a/src/commands/item.ts b/src/commands/item.ts index 6b23c37..7f31f10 100644 --- a/src/commands/item.ts +++ b/src/commands/item.ts @@ -254,7 +254,26 @@ export default { return await interaction.followUp(`${formatItem(item)} now has **${formatBehavior(behavior, value || undefined)}**`); } else if (subcommand === 'remove') { - /////////////////// asngheasgyjdreajdneyonv + const behaviorName = interaction.options.getString('removebehavior', true); + + const behavior = getBehavior(behaviorName); + if (!behavior) return await interaction.followUp(`No such behavior ${behaviorName}!`); + + const existingBehavior = await db('itemBehaviors') + .where('item', item.id) + .where('behavior', behavior.name) + .first(); + + if (!existingBehavior) { + return await interaction.followUp(`${formatItem(item)} does not have behavior \`${behaviorName}\`!`); + } + + await db('itemBehaviors') + .where('item', item.id) + .where('behavior', behavior.name) + .delete(); + + return await interaction.followUp(`Deleted behavior ${formatBehavior(behavior, existingBehavior.value)} from ${formatItem(item)}.`); } } else { if (subcommand === 'give') { @@ -320,6 +339,21 @@ export default { } await interaction.respond(foundBehaviors.map(b => ({name: `${b.itemType}:${b.name} - ${b.description}`, value: b.name}))); + } else if (focused.name === 'removebehavior') { + const itemID = interaction.options.getString('customitem'); + if (!itemID) return await interaction.respond([]); + const behaviors = await db('itemBehaviors') + .where('item', itemID); + + const foundBehaviors = behaviors + .map(b => ({ behavior: getBehavior(b.behavior)!, value: b.value })) + .filter(b => b.behavior) + .filter(b => b.behavior.name.toLowerCase().includes(focused.value.toLowerCase())); + + await interaction.respond(foundBehaviors.map(b => ({ + name: `${b.behavior.itemType}:${formatBehavior(b.behavior, b.value)} - ${b.behavior.description}`, + value: b.behavior.name + }))); } } } satisfies Command; \ No newline at end of file