!server can now also use numbers from the invite of servers with
a vanity URL.
API calls for the invite and the REST guild endpoint are now memoized.
Since Guild.fetchAllMembers() now returns a promise, tweaked
refreshMembersIfNeeded() to not make unnecessary API calls if called
multiple times in rapid succession.
Offline member count is now derived from guild member count and
calculated online member count. The numbers might still not match the
real member counts, but at least they add up to the total member
count.
Eris 0.11.2 also made Guild.fetchAllMembers() return a promise, which
means !server will now properly wait for all members to load.
Since the command uses extra server resources for resizing the image,
I want to limit its use a bit. Might look into a per-channel or
per-guild cooldown in the future rather than per-user, but this will
work for now.
Including the dom lib doesn't make much sense since we're not in a
browser environment. While this solution isn't perfect either, I
think it's more fitting.
The !clean response is intended to be deleted after a delay when
cleaning the current channel i.e. not specifying a different channel
to clean. This behaviour was reversed, so the response got deleted when
cleaning a different channel and stayed when cleaning the current
channel.