From a7a09455e9646cbdaa4562058aef3c72178fc391 Mon Sep 17 00:00:00 2001 From: acdenisSK Date: Sun, 9 Jul 2017 02:13:14 +0200 Subject: Add a way to return all online members in a guild --- src/model/guild/mod.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/model') diff --git a/src/model/guild/mod.rs b/src/model/guild/mod.rs index 8270c94..03aa07e 100644 --- a/src/model/guild/mod.rs +++ b/src/model/guild/mod.rs @@ -668,6 +668,24 @@ impl Guild { self.id.members(limit, after) } + /// Gets a list of all the online members in this guild. + pub fn online_members(&self) -> Vec<&Member> { + let mut members = vec![]; + + for (&id, ref member) in &self.members { + match self.presences.get(&id) { + Some(ref presence) => { + if OnlineStatus::Online == presence.status { + members.push(*member); + } + }, + None => continue, + } + } + + members + } + /// Retrieves the first [`Member`] found that matches the name - with an /// optional discriminator - provided. /// -- cgit v1.2.3