diff options
Diffstat (limited to 'commands')
| -rw-r--r-- | commands/vainsocial/guild_add.js | 3 | ||||
| -rw-r--r-- | commands/vainsocial/guild_fame_calc.js | 36 | ||||
| -rw-r--r-- | commands/vainsocial/guild_update.js | 28 | ||||
| -rw-r--r-- | commands/vainsocial/match.js | 32 | ||||
| -rw-r--r-- | commands/vainsocial/matches.js | 22 | ||||
| -rw-r--r-- | commands/vainsocial/me.js | 16 | ||||
| -rw-r--r-- | commands/vainsocial/user.js | 23 |
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); + } } }; |
