Add balance command for users to check their balance
This commit is contained in:
2
TODO.md
2
TODO.md
@@ -1,5 +1,5 @@
|
|||||||
## TODOs
|
## TODOs
|
||||||
- Create balance command for user to view their balance
|
- ~~Create balance command for user to view their balance~~
|
||||||
- Create a command that explains the pricing
|
- Create a command that explains the pricing
|
||||||
- Update welcome and insufficient replies
|
- Update welcome and insufficient replies
|
||||||
- add a section for the help menu to show items that need tokens
|
- add a section for the help menu to show items that need tokens
|
||||||
|
|||||||
28
commands/balance.js
Normal file
28
commands/balance.js
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
const { SlashCommandBuilder } = require('discord.js');
|
||||||
|
const { DebugBuilder } = require("../utilities/debugBuilder");
|
||||||
|
const log = new DebugBuilder("server", "balance");
|
||||||
|
|
||||||
|
const { checkBalance } = require("../controllers/accountController");
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
data: new SlashCommandBuilder()
|
||||||
|
.setName('balance')
|
||||||
|
.setDescription('Check your balance of AI tokens'),
|
||||||
|
example: "balance",
|
||||||
|
isPrivileged: false,
|
||||||
|
requiresTokens: false,
|
||||||
|
defaultTokenUsage: 0,
|
||||||
|
deferInitialReply: false,
|
||||||
|
async execute(interaction) {
|
||||||
|
try{
|
||||||
|
checkBalance(interaction.member.id, async (err, balance) => {
|
||||||
|
if (err) throw err;
|
||||||
|
|
||||||
|
await interaction.reply({ content: `${interaction.member.user}, you have ${balance} tokens remaining`, ephemeral: true })
|
||||||
|
})
|
||||||
|
}catch(err){
|
||||||
|
log.ERROR(err)
|
||||||
|
await interaction.reply(`Sorry ${interaction.member.user}, something went wrong`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -36,8 +36,8 @@ exports.createAccount = (_discordAccountId, callback) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.withdrawBalance = async (_withdrawAmount, _accountId, callback) => {
|
exports.withdrawBalance = async (_withdrawAmount, _discordAccountId, callback) => {
|
||||||
userStorage.updateBalance('withdraw', _withdrawAmount, _accountId, async (err, result) => {
|
userStorage.updateBalance('withdraw', _withdrawAmount, _discordAccountId, async (err, result) => {
|
||||||
if (err) return callback(err, undefined);
|
if (err) return callback(err, undefined);
|
||||||
|
|
||||||
if(result) return callback(undefined, result);
|
if(result) return callback(undefined, result);
|
||||||
@@ -55,6 +55,22 @@ exports.verifyBalance = (_tokensToBeUsed, _accountId, callback) => {
|
|||||||
return callback(undefined, true);
|
return callback(undefined, true);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Check the given account for the token balance
|
||||||
|
*
|
||||||
|
* @param {*} _discordAccountId
|
||||||
|
* @param {*} callback
|
||||||
|
*/
|
||||||
|
exports.checkBalance = (_discordAccountId, callback) => {
|
||||||
|
if (!_discordAccountId) return callback(new Error("No discord account given to check balance of"), undefined);
|
||||||
|
userStorage.getRecordBy("discord_account_id", _discordAccountId, (err, accountRecord) => {
|
||||||
|
if (err) return callback(err, undefined);
|
||||||
|
|
||||||
|
if (!accountRecord) return callback(new Error("No account record given"), undefined);
|
||||||
|
|
||||||
|
return callback(undefined, accountRecord.balance);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
exports.insufficientTokensResponse = (interaction) => {
|
exports.insufficientTokensResponse = (interaction) => {
|
||||||
log.DEBUG("INSUFFICIENT TOKENS RESPONSE")
|
log.DEBUG("INSUFFICIENT TOKENS RESPONSE")
|
||||||
|
|||||||
@@ -177,14 +177,26 @@ exports.UserStorage = class UserStorage extends Storage {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check or return the balance of a given account ID
|
||||||
|
*
|
||||||
|
* @param {*} _tokensToBeUsed The amount of tokens to be used, set to 0 to return the balance
|
||||||
|
* @param {*} _account_id The account ID to check or return the balance of
|
||||||
|
* @param {*} callback
|
||||||
|
*/
|
||||||
checkBalance(_tokensToBeUsed, _account_id, callback) {
|
checkBalance(_tokensToBeUsed, _account_id, callback) {
|
||||||
|
if (!_account_id) return callback(new Error("Account not specified when checking account balance"), undefined);
|
||||||
|
if (!_tokensToBeUsed && !_tokensToBeUsed >= 0) return callback(new Error("Specified tokens are invalid when checking account balance"), undefined);
|
||||||
this.getRecordBy('account_id', _account_id, (err, record) => {
|
this.getRecordBy('account_id', _account_id, (err, record) => {
|
||||||
if (err) return callback(err, undefined);
|
if (err) return callback(err, undefined);
|
||||||
|
|
||||||
if (record?.balance && record.balance > _tokensToBeUsed) return callback(undefined, true);
|
// Check to see if the account has a balance greater than what was given
|
||||||
else{
|
if(_tokensToBeUsed > 0){
|
||||||
return callback(undefined, false);
|
if (record?.balance && record.balance > _tokensToBeUsed) return callback(undefined, true);
|
||||||
|
else return callback(undefined, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return callback(undefined, record.balance)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,11 +205,11 @@ exports.UserStorage = class UserStorage extends Storage {
|
|||||||
*
|
*
|
||||||
* @param {string} _updateType The type of update to make to the account [ withdraw | deposit ]
|
* @param {string} _updateType The type of update to make to the account [ withdraw | deposit ]
|
||||||
* @param {number} _updateAmount The amount to update the account
|
* @param {number} _updateAmount The amount to update the account
|
||||||
* @param {number} _account_id The ID of the account to update
|
* @param {number} _account_id The ID of the discord account to update
|
||||||
* @param {function} callback The callback function to call with the results
|
* @param {function} callback The callback function to call with the results
|
||||||
* @returns Result from the SQL query or false
|
* @returns Result from the SQL query or false
|
||||||
*/
|
*/
|
||||||
updateBalance(_updateType, _updateAmount, _account_id, callback){
|
updateBalance(_updateType, _updateAmount, _discord_account_id, callback){
|
||||||
var sqlQuery = "";
|
var sqlQuery = "";
|
||||||
switch(_updateType){
|
switch(_updateType){
|
||||||
case "withdraw":
|
case "withdraw":
|
||||||
|
|||||||
Reference in New Issue
Block a user