Skip to content

Commit eace7d0

Browse files
committed
Update currencySymbol to mysql in items category
1 parent 3f4ce01 commit eace7d0

File tree

10 files changed

+229
-76
lines changed

10 files changed

+229
-76
lines changed

commands/Economy/balance.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ class Balance extends Command {
5252
`,
5353
[msg.guild.id],
5454
);
55+
const currencySymbol = economyRows[0]?.symbol || '$';
5556

5657
const [balanceRows] = await this.client.db.execute(
5758
/* sql */ `
@@ -70,8 +71,6 @@ class Balance extends Command {
7071
const bank = BigInt(balanceRows[0]?.bank ?? 0);
7172
const netWorth = cash + bank;
7273

73-
const currencySymbol = economyRows[0]?.symbol || '$';
74-
7574
function formatCurrency(amount, symbol) {
7675
if (amount < 0) {
7776
return '-' + symbol + (-amount).toLocaleString();

commands/Items/buy-item.js

Lines changed: 58 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,33 @@ class BuyItem extends Command {
4343

4444
const item = store[itemKey];
4545
const itemCost = BigInt(item.cost);
46-
let userCash = BigInt(await db.get(`servers.${msg.guild.id}.users.${msg.member.id}.economy.cash`));
46+
47+
const [economyRows] = await this.client.db.execute(
48+
/* sql */ `
49+
SELECT
50+
*
51+
FROM
52+
economy_settings
53+
WHERE
54+
server_id = ?
55+
`,
56+
[msg.guild.id],
57+
);
58+
const currencySymbol = economyRows[0]?.symbol || '$';
59+
60+
const [balanceRows] = await this.client.db.execute(
61+
/* sql */ `
62+
SELECT
63+
cash
64+
FROM
65+
economy_balances
66+
WHERE
67+
server_id = ?
68+
AND user_id = ?
69+
`,
70+
[msg.guild.id, msg.member.id],
71+
);
72+
const userCash = BigInt(balanceRows[0]?.cash ?? economyRows[0]?.start_balance ?? 0);
4773
if (userCash < itemCost * BigInt(quantity)) return msg.reply('You do not have enough money to buy this item.');
4874

4975
if (item.stock && item.stock < quantity) {
@@ -85,8 +111,20 @@ class BuyItem extends Command {
85111
}
86112

87113
// Deduct the cost from the user's cash
88-
userCash = userCash - itemCost * BigInt(quantity);
89-
await db.set(`servers.${msg.guild.id}.users.${msg.member.id}.economy.cash`, userCash.toString());
114+
const amount = itemCost * BigInt(quantity);
115+
await this.client.db.execute(
116+
/* sql */
117+
`
118+
INSERT INTO
119+
economy_balances (server_id, user_id, cash)
120+
VALUES
121+
(?, ?, ?) ON DUPLICATE KEY
122+
UPDATE cash = cash -
123+
VALUES
124+
(cash)
125+
`,
126+
[msg.guild.id, msg.member.id, amount.toString()],
127+
);
90128

91129
if (!item.inventory) {
92130
if (item.roleGiven) {
@@ -118,12 +156,12 @@ class BuyItem extends Command {
118156
const memberCreated = DateTime.fromMillis(msg.author.createdAt.getTime()).toFormat('MMMM dd, yyyy');
119157

120158
let replyMessage = item.replyMessage
121-
.replace('{member.id}', msg.author.id)
122-
.replace('{member.username}', msg.author.username)
123-
.replace('{member.tag}', msg.author.tag)
124-
.replace('{member.mention}', msg.author)
125-
.replace('{member.created}', memberCreated)
126-
.replace('{member.created.duration}', memberCreatedDuration);
159+
.replace(/\{member\.id\}/gi, msg.author.id)
160+
.replace(/\{member\.username\}/gi, msg.author.username)
161+
.replace(/\{member\.tag\}/gi, msg.author.tag)
162+
.replace(/\{member\.mention\}/gi, msg.author.toString())
163+
.replace(/\{member\.created\}/gi, memberCreated)
164+
.replace(/\{member\.created\.duration\}/gi, memberCreatedDuration);
127165

128166
// Replace Server
129167
// Calculate the duration since the server was created
@@ -142,11 +180,11 @@ class BuyItem extends Command {
142180
const serverCreated = DateTime.fromMillis(msg.guild.createdAt.getTime()).toFormat('MMMM dd, yyyy');
143181

144182
replyMessage = replyMessage
145-
.replace('{server.id}', msg.guild.id)
146-
.replace('{server.name}', msg.guild.name)
147-
.replace('{server.members}', msg.guild.memberCount.toLocaleString())
148-
.replace('{server.created}', serverCreated)
149-
.replace('{server.created.duration}', serverCreatedDuration);
183+
.replace(/\{server\.id\}/gi, msg.guild.id)
184+
.replace(/\{server\.name\}/gi, msg.guild.name)
185+
.replace(/\{server\.members\}/gi, msg.guild.memberCount.toLocaleString())
186+
.replace(/\{server\.created\}/gi, serverCreated)
187+
.replace(/\{server\.created\.duration\}/gi, serverCreatedDuration);
150188

151189
const role =
152190
this.client.util.getRole(msg, item.roleGiven) ||
@@ -170,12 +208,12 @@ class BuyItem extends Command {
170208
const roleCreated = DateTime.fromMillis(role.createdAt.getTime()).toFormat('MMMM dd, yyyy');
171209

172210
replyMessage = replyMessage
173-
.replace('{role.id}', role.id)
174-
.replace('{role.name}', role.name)
175-
.replace('{role.mention}', role)
176-
.replace('{role.members}', role.members.size.toLocaleString())
177-
.replace('{role.created}', roleCreated)
178-
.replace('{role.created.duration}', roleCreatedDuration);
211+
.replace(/\{role\.id\}/gi, role.id)
212+
.replace(/\{role\.name\}/gi, role.name)
213+
.replace(/\{role\.mention\}/gi, role)
214+
.replace(/\{role\.members\}/gi, role.members.size.toLocaleString())
215+
.replace(/\{role\.created\}/gi, roleCreated)
216+
.replace(/\{role\.created\.duration\}/gi, roleCreatedDuration);
179217
}
180218
return msg.channel.send(replyMessage);
181219
}
@@ -205,7 +243,6 @@ class BuyItem extends Command {
205243

206244
await db.set(`servers.${msg.guild.id}.users.${msg.member.id}.economy.inventory`, userInventory);
207245

208-
const currencySymbol = (await db.get(`servers.${msg.guild.id}.economy.symbol`)) || '$';
209246
const itemCostQuantity = (itemCost * BigInt(quantity)).toLocaleString();
210247
const csCost = this.client.util.limitStringLength(currencySymbol + itemCostQuantity, 0, 700);
211248

commands/Items/create-item.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class CreateItem extends Command {
1313
usage: 'create-item [item name]',
1414
longDescription:
1515
'Use this command without any arguments to be guided through every option, and type `cancel` at any point to stop. \nUse this command, with the item name, to create a "simple" item you can edit later.',
16-
aliases: ['createitem', 'new-item', 'item-create'],
16+
aliases: ['createitem', 'new-item', 'item-create', 'item-setup'],
1717
permLevel: 'Administrator',
1818
guildOnly: true,
1919
});
@@ -398,7 +398,7 @@ class CreateItem extends Command {
398398
});
399399

400400
await message.edit({
401-
content: `**${number}.** How much stock of this item will there be? \nIf unlimited, just reply skip or infinity.`,
401+
content: `**${number}.** How much stock of this item will there be? \nIf unlimited, just reply \`skip\` or \`infinity\`.`,
402402
embeds: [embed],
403403
});
404404

@@ -733,7 +733,7 @@ class CreateItem extends Command {
733733
.awaitMessages({
734734
filter,
735735
max: 1,
736-
time: 120000,
736+
time: 300000,
737737
errors: ['time'],
738738
})
739739
.catch(() => null);

commands/Items/item-info.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,19 @@ class ItemInfo extends Command {
2828
return this.client.util.errorEmbed(msg, 'That item does not exist in the store.');
2929
}
3030

31-
const currencySymbol = (await db.get(`servers.${msg.guild.id}.economy.symbol`)) || '$';
31+
const [economyRows] = await this.client.db.execute(
32+
/* sql */ `
33+
SELECT
34+
*
35+
FROM
36+
economy_settings
37+
WHERE
38+
server_id = ?
39+
`,
40+
[msg.guild.id],
41+
);
42+
const currencySymbol = economyRows[0]?.symbol || '$';
43+
3244
const cost = currencySymbol + BigInt(item.cost).toLocaleString();
3345
const requiredBalance = item.requiredBalance
3446
? currencySymbol + BigInt(item.requiredBalance).toLocaleString()

commands/Items/sell-item.js

Lines changed: 56 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,18 @@ class SellItem extends Command {
4848
return this.client.util.errorEmbed(msg, 'You do not have enough of this item in your inventory.');
4949
}
5050

51-
const currencySymbol = (await db.get(`servers.${msg.guild.id}.economy.symbol`)) || '$';
51+
const [economyRows] = await this.client.db.execute(
52+
/* sql */ `
53+
SELECT
54+
*
55+
FROM
56+
economy_settings
57+
WHERE
58+
server_id = ?
59+
`,
60+
[msg.guild.id],
61+
);
62+
const currencySymbol = economyRows[0]?.symbol || '$';
5263

5364
// Ask the seller for a price
5465
itemName = sellerInventory[itemIndex].name;
@@ -68,7 +79,21 @@ class SellItem extends Command {
6879
}
6980

7081
// Check buyer's balance
71-
let buyerCash = BigInt(await db.get(`servers.${msg.guild.id}.users.${member.id}.economy.cash`));
82+
const [balanceRows] = await this.client.db.execute(
83+
/* sql */ `
84+
SELECT
85+
cash,
86+
bank
87+
FROM
88+
economy_balances
89+
WHERE
90+
server_id = ?
91+
AND user_id = ?
92+
`,
93+
[msg.guild.id, member.id],
94+
);
95+
const buyerCash = BigInt(balanceRows[0]?.cash ?? economyRows[0]?.start_balance ?? 0);
96+
7297
const totalCost = BigInt(price);
7398
if (buyerCash < totalCost) {
7499
const noMoneyEmbed = new EmbedBuilder().setDescription(`${member} cannot afford this.`);
@@ -93,12 +118,36 @@ class SellItem extends Command {
93118
confirmCollector.on('collect', async (confirmation) => {
94119
if (this.client.util.yes.includes(confirmation.content.toLowerCase())) {
95120
// Transfer money and update inventories
96-
buyerCash -= totalCost;
97-
await db.set(`servers.${msg.guild.id}.users.${member.id}.economy.cash`, buyerCash.toString());
98121

99-
let sellerCash = BigInt(await db.get(`servers.${msg.guild.id}.users.${msg.member.id}.economy.cash`));
100-
sellerCash += totalCost;
101-
await db.set(`servers.${msg.guild.id}.users.${msg.member.id}.economy.cash`, sellerCash.toString());
122+
// Update buyer's cash
123+
await this.client.db.execute(
124+
/* sql */
125+
`
126+
INSERT INTO
127+
economy_balances (server_id, user_id, cash)
128+
VALUES
129+
(?, ?, ?) ON DUPLICATE KEY
130+
UPDATE cash = cash -
131+
VALUES
132+
(cash)
133+
`,
134+
[msg.guild.id, member.id, totalCost.toString()],
135+
);
136+
137+
// Update seller's cash
138+
await this.client.db.execute(
139+
/* sql */
140+
`
141+
INSERT INTO
142+
economy_balances (server_id, user_id, cash)
143+
VALUES
144+
(?, ?, ?) ON DUPLICATE KEY
145+
UPDATE cash = cash +
146+
VALUES
147+
(cash)
148+
`,
149+
[msg.guild.id, msg.member.id, totalCost.toString()],
150+
);
102151

103152
// Update seller's inventory
104153
sellerInventory[itemIndex].quantity -= quantity;

commands/Items/store.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,19 @@ class Store extends Command {
2525
return this.client.util.errorEmbed(msg, msg.settings.prefix + this.help.usage, 'Incorrect Usage');
2626
}
2727

28-
const currencySymbol = (await db.get(`servers.${msg.guild.id}.economy.symbol`)) || '$';
28+
const [economyRows] = await this.client.db.execute(
29+
/* sql */ `
30+
SELECT
31+
*
32+
FROM
33+
economy_settings
34+
WHERE
35+
server_id = ?
36+
`,
37+
[msg.guild.id],
38+
);
39+
const currencySymbol = economyRows[0]?.symbol || '$';
40+
2941
const store = (await db.get(`servers.${msg.guild.id}.economy.store`)) || {};
3042

3143
// Sort store by item cost

commands/Items/use-item.js

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,12 @@ class UseItem extends Command {
102102
const memberCreated = DateTime.fromMillis(msg.author.createdAt.getTime()).toFormat('MMMM dd, yyyy');
103103

104104
let replyMessage = item.replyMessage
105-
.replace('{member.id}', msg.author.id)
106-
.replace('{member.username}', msg.author.username)
107-
.replace('{member.tag}', msg.author.tag)
108-
.replace('{member.mention}', msg.author)
109-
.replace('{member.created}', memberCreated)
110-
.replace('{member.created.duration}', memberCreatedDuration);
105+
.replace(/\{member\.id\}/gi, msg.author.id)
106+
.replace(/\{member\.username\}/gi, msg.author.username)
107+
.replace(/\{member\.tag\}/gi, msg.author.tag)
108+
.replace(/\{member\.mention\}/gi, msg.author)
109+
.replace(/\{member\.created\}/gi, memberCreated)
110+
.replace(/\{member\.created\.duration\}/gi, memberCreatedDuration);
111111

112112
// Replace Server
113113
// Calculate the duration since the server was created
@@ -126,11 +126,11 @@ class UseItem extends Command {
126126
const serverCreated = DateTime.fromMillis(msg.guild.createdAt.getTime()).toFormat('MMMM dd, yyyy');
127127

128128
replyMessage = replyMessage
129-
.replace('{server.id}', msg.guild.id)
130-
.replace('{server.name}', msg.guild.name)
131-
.replace('{server.members}', msg.guild.memberCount.toLocaleString())
132-
.replace('{server.created}', serverCreated)
133-
.replace('{server.created.duration}', serverCreatedDuration);
129+
.replace(/\{server\.id\}/gi, msg.guild.id)
130+
.replace(/\{server\.name\}/gi, msg.guild.name)
131+
.replace(/\{server\.members\}/gi, msg.guild.memberCount.toLocaleString())
132+
.replace(/\{server\.created\}/gi, serverCreated)
133+
.replace(/\{server\.created\.duration\}/gi, serverCreatedDuration);
134134

135135
const role =
136136
this.client.util.getRole(msg, item.roleGiven) ||
@@ -154,12 +154,12 @@ class UseItem extends Command {
154154
const roleCreated = DateTime.fromMillis(role.createdAt.getTime()).toFormat('MMMM dd, yyyy');
155155

156156
replyMessage = replyMessage
157-
.replace('{role.id}', role.id)
158-
.replace('{role.name}', role.name)
159-
.replace('{role.mention}', role)
160-
.replace('{role.members}', role.members.size.toLocaleString())
161-
.replace('{role.created}', roleCreated)
162-
.replace('{role.created.duration}', roleCreatedDuration);
157+
.replace(/\{role\.id\}/gi, role.id)
158+
.replace(/\{role\.name\}/gi, role.name)
159+
.replace(/\{role\.mention\}/gi, role)
160+
.replace(/\{role\.members\}/gi, role.members.size.toLocaleString())
161+
.replace(/\{role\.created\}/gi, roleCreated)
162+
.replace(/\{role\.created\.duration\}/gi, roleCreatedDuration);
163163
}
164164

165165
return msg.channel.send(replyMessage);

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "mythical",
3-
"version": "5.11.0",
3+
"version": "5.11.1",
44
"description": "Mythical Bot",
55
"owner": "themondon",
66
"main": "index.js",

0 commit comments

Comments
 (0)