diff options
| -rw-r--r-- | api.js | 6 | ||||
| -rw-r--r-- | commands/vainsocial/guild_member.js | 33 | ||||
| -rw-r--r-- | commands/vainsocial/guild_pin.js | 46 |
3 files changed, 82 insertions, 3 deletions
@@ -226,6 +226,12 @@ module.exports.getMatch = async (id) => { module.exports.getGuild = async (token) => { return await api.getFE("/guild", { user_token: token }, 60, "guild+" + token); } + +// return a guild +module.exports.getGuildMembersByGuildName = async (name) => { + // TODO caching + return await api.getFE("/guild/" + name + "/members", { }, 0); +} // TODO! cache guilds by guild id, not by user token // add user to guild diff --git a/commands/vainsocial/guild_member.js b/commands/vainsocial/guild_member.js index 2a1bf27..e72fff1 100644 --- a/commands/vainsocial/guild_member.js +++ b/commands/vainsocial/guild_member.js @@ -25,17 +25,44 @@ module.exports = class ViewGuildMemberCommand extends Commando.Command { type: "string", min: 2, default: "?" + }, { + key: "guild", + label: "guild", + prompt: "Please specify a Guild's name.", + type: "string", + min: 2, + default: "?" } ] }); } async run(msg, args) { util.trackAction(msg, "vainsocial-guild-member"); const guildMemberView = new GuildMemberView(msg); + // get IGN or default + let ign; try { - const guild = await api.getGuild(msg.author.id); - const member = guild.members.filter((m) => m.player.name == args.name)[0]; + ign = await util.ignForUser(args.name, msg.author.id); + } catch (err) { + return await guildMemberView.error(strings.unknown(msg)); + } + // get guild: name, server default, self + let guildName = args.guild, guild; + if (guildName == "?") { + guildName = msg.guild.settings.get("default-guild-name"); + } + + try { + let members; + // TODO. + if (guildName == undefined) members = (await api.getGuild(msg.author.id)).members; + else members = await api.getGuildMembersByGuildName(guildName); + console.log(guildName); + if (members.length == 0) + throw { error: { err: "Could not find that Guild." } }; + + const member = members.filter((m) => m.player.name == args.name)[0]; if (member == undefined) - throw { err: { error: "Player is not in the Guild." } }; + throw { error: { err: "Player is not in the Guild." } }; const player = await api.getPlayer(member.player.name); const matches = await api.getMatches(player.name); await guildMemberView.respond(member, player, matches); diff --git a/commands/vainsocial/guild_pin.js b/commands/vainsocial/guild_pin.js new file mode 100644 index 0000000..986666e --- /dev/null +++ b/commands/vainsocial/guild_pin.js @@ -0,0 +1,46 @@ +#!/usr/bin/node +/* jshint esnext:true */ +"use strict"; + +const Commando = require("discord.js-commando"), + oneLine = require("common-tags").oneLine, + util = require("../../util"), + api = require("../../api"), + SimpleView = require("../../views/simple"); + +module.exports = class PinGuildCommand extends Commando.Command { + constructor(client) { + super(client, { + name: "vainsocial-guildpin", + aliases: ["vguild-pin", "vgpin"], + group: "vainsocial-guild", + memberName: "vainsocial-guildpin", + description: "Share your Guild on a server.", + examples: ["vgview"], + + args: [ { + key: "name", + label: "name", + prompt: "Please specify your Guild's name.", + type: "string", + min: 2, + default: "?" + } ] + }); + } + async run(msg, args) { + util.trackAction(msg, "vainsocial-guild-pin"); + const pinView = new SimpleView(msg); + if (!msg.member.hasPermission('ADMINISTRATOR')) + return await pinView.error("You need to be server administrator to pin a GUild."); + let guild; + try { + guild = await api.getGuild(msg.author.id); + } catch (err) { + console.log(err); + return await guildOverviewView.error(err.error.err); + } + msg.guild.settings.set("default-guild-name", guild.name); + await pinView.respond(`Successfully pinned the Guild \`${guild.name}\` to your server.`); + } +}; |
