summaryrefslogtreecommitdiff
path: root/commands
diff options
context:
space:
mode:
Diffstat (limited to 'commands')
-rw-r--r--commands/vainsocial/guild_add.js3
-rw-r--r--commands/vainsocial/guild_fame_calc.js36
-rw-r--r--commands/vainsocial/guild_update.js28
-rw-r--r--commands/vainsocial/match.js32
-rw-r--r--commands/vainsocial/matches.js22
-rw-r--r--commands/vainsocial/me.js16
-rw-r--r--commands/vainsocial/user.js23
7 files changed, 82 insertions, 78 deletions
diff --git a/commands/vainsocial/guild_add.js b/commands/vainsocial/guild_add.js
index 0021360..8474724 100644
--- a/commands/vainsocial/guild_add.js
+++ b/commands/vainsocial/guild_add.js
@@ -7,7 +7,7 @@ const Commando = require("discord.js-commando"),
Promise = require("bluebird"),
api = require("../../api"),
util = require("../../util"),
- GuildAddView = require("../../views/guild_add");
+ GuildAddView = require("../../views/guild_progress");
module.exports = class AddGuildMemberCommand extends Commando.Command {
constructor(client) {
@@ -24,7 +24,6 @@ Register IGNs to your Guild.
argsType: "multiple"
});
}
- // register a VainSocial Guild to a Discord account
async run(msg, args) {
util.trackAction(msg, "vainsocial-guild-add");
let playersData = {};
diff --git a/commands/vainsocial/guild_fame_calc.js b/commands/vainsocial/guild_fame_calc.js
deleted file mode 100644
index e1ec912..0000000
--- a/commands/vainsocial/guild_fame_calc.js
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/node
-/* jshint esnext:true */
-"use strict";
-
-const Commando = require("discord.js-commando"),
- oneLine = require("common-tags").oneLine,
- api = require("../../api"),
- util = require("../../util");
-
-module.exports = class CalculateGuildFameCommand extends Commando.Command {
- constructor(client) {
- super(client, {
- name: "vainsocial-guildcalc",
- aliases: ["vguild-calc", "vgcalc"],
- group: "vainsocial-guild",
- memberName: "vainsocial-guildcalc",
- description: "Update your Guild's fame.",
- details: oneLine`
-Recalculate your Guild members' fame.
-`,
- examples: ["vgcalc"]
- });
- }
- // internal / premium: immediately call backend fame refresh
- async run(msg, args) {
- util.trackAction(msg, "vainsocial-guild-calculate");
- const guild = await api.getGuild(msg.author.id);
- if (guild == undefined) {
- await msg.reply("You are not registered in any guilds.");
- return;
- }
- await msg.reply("Your Guild members' fame will be updated soon…");
- await api.calculateGuild(guild.id, msg.author.id);
- await msg.reply("Your Guild members' fame has been updated.");
- }
-};
diff --git a/commands/vainsocial/guild_update.js b/commands/vainsocial/guild_update.js
index 9c9fe1d..66e8a5f 100644
--- a/commands/vainsocial/guild_update.js
+++ b/commands/vainsocial/guild_update.js
@@ -6,7 +6,8 @@ const Commando = require("discord.js-commando"),
oneLine = require("common-tags").oneLine,
Promise = require("bluebird"),
api = require("../../api"),
- util = require("../../util");
+ util = require("../../util"),
+ GuildMembersProgressView = require("../../views/guild_progress");
module.exports = class UpdateGuildCommand extends Commando.Command {
constructor(client) {
@@ -25,14 +26,21 @@ Update the match history for all your Guild members.
// internal / premium: immediately call backend player refresh
async run(msg, args) {
util.trackAction(msg, "vainsocial-guild-update");
- const guild = await api.getGuild(msg.author.id);
- if (guild == undefined) {
- await msg.reply("You are not registered in any guilds.");
- return;
- }
- // TODO progress report
- await Promise.map(guild.members,
- (member) => api.upsearchPlayer(member.player.name));
- await msg.reply("Your Guild members will be up to date soon.");
+ let playersData = {};
+ const playersWaiters = args.map((name) => api.subscribeUpdates(name)),
+ guildUpdateView = new GuildMembersProgressView(msg, playersData);
+ // create waiter dict & data dict
+ await Promise.map(playersWaiters, async (waiter, idx) => {
+ await api.updatePlayer(args[idx]);
+ let success = false;
+ while (await waiter.next() != undefined) {
+ playersData[args[idx]] = await api.getPlayer(args[idx]);
+ await guildUpdateView.respond();
+ success = true;
+ }
+ });
+ await guildUpdateView.respond("Your Guild's fame is being updated…");
+ await api.calculateGuild(guild.id, msg.author.id);
+ await guildUpdateView.respond("Your Guild was updated.");
}
};
diff --git a/commands/vainsocial/match.js b/commands/vainsocial/match.js
index c3d2906..3acde84 100644
--- a/commands/vainsocial/match.js
+++ b/commands/vainsocial/match.js
@@ -42,19 +42,27 @@ module.exports = class ShowMatchCommand extends Commando.Command {
}
async run(msg, args) {
util.trackAction(msg, "vainsocial-match", args.name);
- const ign = await util.ignForUser(args.name, msg.author.id);
- if (ign == undefined) return await msg.say(strings.unknown(msg));
+ let ign;
+ try {
+ ign = await util.ignForUser(args.name, msg.author.id);
+ } catch (err) {
+ return await new MatchView(msg, undefined).error(strings.unknown(msg));
+ }
- const participations = await api.getMatches(ign);
- if (args.number > participations.length)
- return await msg.say(strings.tooFewMatches(ign));
- const matchView = new MatchView(msg,
- participations[args.number-1].match_api_id);
- // wait for BE update
- const waiter = api.subscribeUpdates(ign);
- await api.upsearchPlayer(ign);
+ const matchView = new MatchView(msg);
+ try {
+ const participations = await api.getMatches(ign);
+ if (args.number > participations.length)
+ return await msg.say(strings.tooFewMatches(ign));
+ // wait for BE update
+ const waiter = api.subscribeUpdates(ign);
+ await api.upsearchPlayer(ign);
- do await matchView.respond();
- while (await waiter.next() != undefined);
+ do await matchView.respond(participations[args.number-1].match_api_id);
+ while (await waiter.next() != undefined);
+ } catch (err) {
+ console.error(err);
+ return await matchView.error(err.error.err);
+ }
}
};
diff --git a/commands/vainsocial/matches.js b/commands/vainsocial/matches.js
index 0197b8b..7499725 100644
--- a/commands/vainsocial/matches.js
+++ b/commands/vainsocial/matches.js
@@ -33,16 +33,24 @@ module.exports = class ShowMatchesCommand extends Commando.Command {
}
async run(msg, args) {
util.trackAction(msg, "vainsocial-matches", args.name);
- const ign = await util.ignForUser(args.name, msg.author.id);
- if (ign == undefined) return await strings.unknown(msg);
+ let ign;
+ try {
+ ign = await util.ignForUser(args.name, msg.author.id);
+ } catch (err) {
+ return await strings.unknown(msg);
+ }
- // peek
const matchesView = new MatchesView(msg, ign);
// wait for BE update
- const waiter = api.subscribeUpdates(ign);
- await api.upsearchPlayer(ign);
+ try {
+ const waiter = api.subscribeUpdates(ign);
+ await api.upsearchPlayer(ign);
- do await matchesView.respond();
- while (await waiter.next() != undefined);
+ do await matchesView.respond();
+ while (await waiter.next() != undefined);
+ } catch (err) {
+ console.log(err);
+ return await matchesView.error(err.error.err);
+ }
}
};
diff --git a/commands/vainsocial/me.js b/commands/vainsocial/me.js
index e17afea..d2afb24 100644
--- a/commands/vainsocial/me.js
+++ b/commands/vainsocial/me.js
@@ -5,7 +5,8 @@
const Commando = require("discord.js-commando"),
oneLine = require("common-tags").oneLine,
api = require("../../api"),
- util = require("../../util");
+ util = require("../../util"),
+ RegisterView = require("../../views/register");
module.exports = class RegisterUserCommand extends Commando.Command {
constructor(client) {
@@ -33,8 +34,15 @@ Store your in game name for quicker access to other commands and for Guild manag
// register a Discord account at VainSocial
async run(msg, args) {
util.trackAction(msg, "vainsocial-me", args.name);
- await api.upsearchPlayer(ign);
- await api.subscribeUpdates(ign).next();
- await new RegisterView(msg).respond();
+ const registerView = new RegisterView(msg, args.name);
+ await api.upsearchPlayer(args.name);
+ try {
+ await api.subscribeUpdates(args.name).next();
+ await api.setUser(msg.author.id, args.name);
+ } catch (err) {
+ console.log(err);
+ return await registerView.error(err.error.err);
+ }
+ await registerView.respond();
}
};
diff --git a/commands/vainsocial/user.js b/commands/vainsocial/user.js
index bfcc1a0..e251ad7 100644
--- a/commands/vainsocial/user.js
+++ b/commands/vainsocial/user.js
@@ -36,15 +36,24 @@ Display VainSocial lifetime statistics from Vainglory
}
async run(msg, args) {
util.trackAction(msg, "vainsocial-user", args.name);
- const ign = await util.ignForUser(args.name, msg.author.id);
- if (ign == undefined) return await msg.say(strings.unknown(msg));
+ let ign;
+ try {
+ ign = await util.ignForUser(args.name, msg.author.id);
+ } catch (err) {
+ return await new PlayerView(msg, args.name).error(strings.unknown(msg));
+ }
const playerView = new PlayerView(msg, ign);
- // wait for BE update
- const waiter = api.subscribeUpdates(ign);
- await api.upsearchPlayer(ign);
+ try {
+ // wait for BE update
+ const waiter = api.subscribeUpdates(ign);
+ await api.upsearchPlayer(ign);
- do await playerView.respond();
- while (await waiter.next() != undefined);
+ do await playerView.respond();
+ while (await waiter.next() != undefined);
+ } catch (err) {
+ console.log(err);
+ return await playerView.error(err.error.err);
+ }
}
};