Skip to content

Commit

Permalink
🔀 Merge pull request #1693 from nikviktorovich/development
Browse files Browse the repository at this point in the history
Fixed handling one word item name on buy/sell
  • Loading branch information
idinium96 authored Feb 17, 2024
2 parents efd06a5 + 2df22ab commit 88410a7
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 15 deletions.
38 changes: 23 additions & 15 deletions src/classes/Commands/functions/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,9 @@ export function getItemAndAmount(
prefix: string,
from?: 'buy' | 'sell' | 'buycart' | 'sellcart'
): { match: Entry; priceKey: string; amount: number } | null {
let name = removeLinkProtocol(message);
let amount = 1;
const args = name.split(' ');
if (/^[-]?\d+$/.test(args[0]) && args.length > 2) {
// Check if the first part of the name is a number, if so, then that is the amount the user wants to trade
amount = parseInt(args[0]);
name = name.replace(amount.toString(), '').trim();
} else if (Pricelist.isAssetId(args[0]) && args.length === 1) {
// Check if the only parameter is an assetid
name = args[0];
}

if (1 > amount) {
amount = 1;
}
const parsedMessage = parseItemAndAmountFromMessage(message);
const name = parsedMessage.name;
let amount = parsedMessage.amount;

if (['!price', '!sellcart', '!buycart', '!sell', '!buy', '!pc', '!s', '!b'].includes(name)) {
bot.sendMessage(
Expand Down Expand Up @@ -210,6 +198,26 @@ export function getItemAndAmount(
};
}

export function parseItemAndAmountFromMessage(message: string): { name: string; amount: number } {
let name = removeLinkProtocol(message);
let amount = 1;
const args = name.split(' ');
if (/^[-]?\d+$/.test(args[0]) && args.length > 1) {
// Check if the first part of the name is a number, if so, then that is the amount the user wants to trade
amount = parseInt(args[0]);
name = name.replace(amount.toString(), '').trim();
} else if (Pricelist.isAssetId(args[0]) && args.length === 1) {
// Check if the only parameter is an assetid
name = args[0];
}

if (1 > amount) {
amount = 1;
}

return { name: name, amount: amount };
}

export function getItemFromParams(
steamID: SteamID | string,
params: UnknownDictionaryKnownValues,
Expand Down
21 changes: 21 additions & 0 deletions src/classes/__tests__/Commands/functions/utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { parseItemAndAmountFromMessage } from '../../../Commands/functions/utils';

it('can parse one word item names', () => {
let messageArgs = '5 Maul';
let parsedMessage = parseItemAndAmountFromMessage(messageArgs);
expect(parsedMessage).toEqual({ name: 'Maul', amount: 5 });

messageArgs = 'Maul';
parsedMessage = parseItemAndAmountFromMessage(messageArgs);
expect(parsedMessage).toEqual({ name: 'Maul', amount: 1 });
});

it('can parse multiple word item names', () => {
let messageArgs = '5 Nostromo Napalmer';
let parsedMessage = parseItemAndAmountFromMessage(messageArgs);
expect(parsedMessage).toEqual({ name: 'Nostromo Napalmer', amount: 5 });

messageArgs = 'Nostromo Napalmer';
parsedMessage = parseItemAndAmountFromMessage(messageArgs);
expect(parsedMessage).toEqual({ name: 'Nostromo Napalmer', amount: 1 });
});

0 comments on commit 88410a7

Please sign in to comment.