diff --git a/README.md b/README.md index 94b9df9..3e6f68c 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ When you need statistics about your discord server * `%info` - version and uptime * `%emotes` : Rank emotes by their usage * arguments: - * @member : filter for one or more member - * #channel : filter for one or more channel + * @member/me : filter for one or more member + * #channel/here : filter for one or more channel * : top emojis, default is 20 * all : list all common emojis in addition to this guild's * members : show top member for each emote diff --git a/src/scanners/composition_scanner.py b/src/scanners/composition_scanner.py index 66f27a4..8dae6ef 100644 --- a/src/scanners/composition_scanner.py +++ b/src/scanners/composition_scanner.py @@ -17,8 +17,8 @@ class CompositionScanner(Scanner): return "```\n" +"%comp : Show composition statistics\n" +"arguments:\n" - +"* @member : filter for one or more member\n" - +"* #channel : filter for one or more channel\n" + +"* @member/me : filter for one or more member\n" + +"* #channel/here : filter for one or more channel\n" +"Example: %comp #mychannel1 @user\n" +"```" diff --git a/src/scanners/emotes_scanner.py b/src/scanners/emotes_scanner.py index 31edf35..80a2b98 100644 --- a/src/scanners/emotes_scanner.py +++ b/src/scanners/emotes_scanner.py @@ -17,8 +17,8 @@ class EmotesScanner(Scanner): return "```\n" +"%emotes : Rank emotes by their usage\n" +"arguments:\n" - +"* @member : filter for one or more member\n" - +"* #channel : filter for one or more channel\n" + +"* @member/me : filter for one or more member\n" + +"* #channel/here : filter for one or more channel\n" +"* : top emojis, default is 20\n" +"* all : list all common emojis in addition to this guild's\n" +"* members : show top member for each emote\n" diff --git a/src/scanners/frequency_scanner.py b/src/scanners/frequency_scanner.py index a011933..71fc1a9 100644 --- a/src/scanners/frequency_scanner.py +++ b/src/scanners/frequency_scanner.py @@ -16,8 +16,8 @@ class FrequencyScanner(Scanner): return "```\n" +"%freq : Show frequency-related statistics\n" +"arguments:\n" - +"* @member : filter for one or more member\n" - +"* #channel : filter for one or more channel\n" + +"* @member/me : filter for one or more member\n" + +"* #channel/here : filter for one or more channel\n" +"Example: %freq #mychannel1 @user\n" +"```" diff --git a/src/scanners/full_scanner.py b/src/scanners/full_scanner.py index c29e2c5..7b5268a 100644 --- a/src/scanners/full_scanner.py +++ b/src/scanners/full_scanner.py @@ -17,8 +17,8 @@ class FullScanner(Scanner): return "```\n" +"%full : Show full statistics\n" +"arguments:\n" - +"* @member : filter for one or more member\n" - +"* #channel : filter for one or more channel\n" + +"* @member/me : filter for one or more member\n" + +"* #channel/here : filter for one or more channel\n" +"Example: %full #mychannel1 @user\n" +"```" @@ -61,6 +61,6 @@ class FullScanner(Scanner): res += ["__Other__:"] res += self.other.to_string( show_top_channel=len(self.channels) > 1, - show_mentioned=(len(self.members) != 1), + show_mentioned=(len(self.members) > 0), ) return res diff --git a/src/scanners/other_scanner.py b/src/scanners/other_scanner.py index 2b1fa3c..c48e193 100644 --- a/src/scanners/other_scanner.py +++ b/src/scanners/other_scanner.py @@ -16,8 +16,8 @@ class OtherScanner(Scanner): return "```\n" +"%other : Show other statistics\n" +"arguments:\n" - +"* @member : filter for one or more member\n" - +"* #channel : filter for one or more channel\n" + +"* @member/me : filter for one or more member\n" + +"* #channel/here : filter for one or more channel\n" +"Example: %other #mychannel1 @user\n" +"```" diff --git a/src/scanners/scanner.py b/src/scanners/scanner.py index 7922ef5..7b18e40 100644 --- a/src/scanners/scanner.py +++ b/src/scanners/scanner.py @@ -44,7 +44,7 @@ class Scanner(ABC): str_mentions = [member.mention for member in message.mentions] for arg in args[1:]: if ( - arg not in self.valid_args + arg not in self.valid_args + ["me", "here"] and (not arg.isdigit() or not self.has_digit_args) and arg not in str_channel_mentions and arg not in str_mentions @@ -56,6 +56,11 @@ class Scanner(ABC): # Get selected channels or all of them if no channel arguments self.channels = no_duplicate(message.channel_mentions) + + # transform the "here" arg + if "here" in args: + self.channels += [message.channel] + self.full = len(self.channels) == 0 if self.full: self.channels = guild.text_channels @@ -64,6 +69,11 @@ class Scanner(ABC): self.members = no_duplicate(message.mentions) self.raw_members = no_duplicate(message.raw_mentions) + # transform the "me" arg + if "me" in args: + self.members += [message.author] + self.raw_members += [message.author.id] + if not await self.init(message, *args): return