let origBot, origGuild;
// A dummy message object so ESLint doesn't complain
class Message {}
class Client {
    constructor(bot, guild) {
        origBot = bot;
        origGuild = guild;
    }

    get guilds() {
        return origBot.guilds.size
    }

    get users() {
        return origBot.users.size
    }

    waitForMessage(authorId, channelId, timeout, check) {
        if (!authorId || !channelId) return Promise.reject("Missing author/channel ID");
        if (!check || typeof check !== "function") check = () => true;
        let c = msg => {
            if (msg.author.id == authorId && msg.channel.id == channelId
                && msg.channel.guild && msg.channel.guild.id == origGuild.id
                && check()) return true;
            else return false;
        };
        origBot.waitForEvent("messageCreate", timeout, c)
            .then((eventReturn) => new Message(eventReturn[0]));
    }
}
module.exports = Client;
@@ -182,16 +182,151 @@
  guild;%0A
+        // TODO: sandboxed user%0A        // this.user = bot.user%0A        // TODO: sandboxed guild%0A        // this.currentGuild = guild;%0A
     %7D%0A%0A 
@@ -373,24 +373,25 @@
 .guilds.size
+;
 %0A    %7D%0A%0A    
@@ -437,16 +437,17 @@
 ers.size
+;
 %0A    %7D%0A%0A

Add new properties, to be sandboxed