mirror of
https://github.com/keanuplayz/TravBot-v3.git
synced 2024-08-15 02:33:12 +00:00
eco-bet: improvements
- duration bounds - link to calling message
This commit is contained in:
parent
055a57e928
commit
d6548c53db
1 changed files with 15 additions and 11 deletions
|
@ -47,8 +47,12 @@ export const BetCommand = new Command({
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
any: new Command({
|
any: new Command({
|
||||||
async run({client, args, author, channel, guild}): Promise<any> {
|
async run({client, args, author, message, channel, guild}): Promise<any> {
|
||||||
if (isAuthorized(guild, channel)) {
|
if (isAuthorized(guild, channel)) {
|
||||||
|
// [Pertinence to make configurable on the fly.]
|
||||||
|
// Lower and upper bounds for bet
|
||||||
|
const durationBounds = { min:"1m", max:"1d" };
|
||||||
|
|
||||||
const sender = Storage.getUser(author.id);
|
const sender = Storage.getUser(author.id);
|
||||||
const target = args[0];
|
const target = args[0];
|
||||||
const receiver = Storage.getUser(target);
|
const receiver = Storage.getUser(target);
|
||||||
|
@ -69,11 +73,11 @@ export const BetCommand = new Command({
|
||||||
|
|
||||||
// handle invalid duration
|
// handle invalid duration
|
||||||
if (duration <= 0)
|
if (duration <= 0)
|
||||||
return channel.send("Invalid duration");
|
return channel.send("Invalid bet duration");
|
||||||
// else if (duration <= {threshold})
|
else if (duration <= parseDuration(durationBounds.min))
|
||||||
// return channel.send("Too short idk");
|
return channel.send(`Bet duration is too short, maximum duration is ${durationBounds.min}`);
|
||||||
// else if (duration >= {threshold})
|
else if (duration >= parseDuration(durationBounds.max))
|
||||||
// return channel.send("Too long idk");
|
return channel.send(`Bet duration is too long, maximum duration is ${durationBounds.max}`);
|
||||||
|
|
||||||
// Ask target whether or not they want to take the bet.
|
// Ask target whether or not they want to take the bet.
|
||||||
const takeBet = await askYesOrNo(
|
const takeBet = await askYesOrNo(
|
||||||
|
@ -82,8 +86,8 @@ export const BetCommand = new Command({
|
||||||
);
|
);
|
||||||
|
|
||||||
if (takeBet) {
|
if (takeBet) {
|
||||||
// [ISSUE: volatile storage]
|
// [MEDIUM PRIORITY: bet persistence to prevent losses in case of shutdown.]
|
||||||
// Remove amount money from both parts to avoid duplication of money.
|
// Remove amount money from both parts at the start to avoid duplication of money.
|
||||||
sender.money -= amount;
|
sender.money -= amount;
|
||||||
receiver.money -= amount;
|
receiver.money -= amount;
|
||||||
Storage.save();
|
Storage.save();
|
||||||
|
@ -93,9 +97,9 @@ export const BetCommand = new Command({
|
||||||
|
|
||||||
// Wait for the duration of the bet.
|
// Wait for the duration of the bet.
|
||||||
client.setTimeout(async () => {
|
client.setTimeout(async () => {
|
||||||
// [Pertinence to reference the invocation message to let people find the bet more easily]
|
// [TODO: when D.JSv13 comes out, inline reply to clean up.]
|
||||||
// When bet is over, give a vote to ask people their thoughts.
|
// When bet is over, give a vote to ask people their thoughts.
|
||||||
const voteMsg = await channel.send(`VOTE: do you think that <@${target.id}> has won the bet?`);
|
const voteMsg = await channel.send(`VOTE: do you think that <@${target.id}> has won the bet?\nhttps://discord.com/channels/${guild.id}/${channel.id}/${message.id}`);
|
||||||
await voteMsg.react("✅");
|
await voteMsg.react("✅");
|
||||||
await voteMsg.react("❌");
|
await voteMsg.react("❌");
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue