summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2017-05-12 20:14:06 +0200
committerschneefux <schneefux+commit@schneefux.xyz>2017-05-12 20:14:12 +0200
commit90f291211703b4d6823c55ca84ba3b1d4127b027 (patch)
treef987517bbb2eb6c9b6349d4a3e96d82b62c8202c
parent54565aeccffb0722de554820eb856b23ac3c004f (diff)
downloaddiscordbot-2.3.1.tar.gz
discordbot-2.3.1.zip
vgpin: allow to pin a guild to a server2.3.1
-rw-r--r--api.js6
-rw-r--r--commands/vainsocial/guild_member.js33
-rw-r--r--commands/vainsocial/guild_pin.js46
3 files changed, 82 insertions, 3 deletions
diff --git a/api.js b/api.js
index 66d52da..12f58c3 100644
--- a/api.js
+++ b/api.js
@@ -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.`);
+ }
+};