Make `users` argument of purge command required
When `user` argument is not provided to the `!purge` command, the greedy convertor returns an empty list. This results in the bot deleting messages of ALL users in the last 10 minutes.
Some kind of a check should be added to prevent this from happening.
Also applicable to the `!clean users` command.

diff --git a/bot/exts/moderation/clean.py b/bot/exts/moderation/clean.py
index d7c2c767..748c018d 100644
--- a/bot/exts/moderation/clean.py
+++ b/bot/exts/moderation/clean.py
@@ -627,12 +627,18 @@ class Clean(Cog):
     @command()
     async def purge(self, ctx: Context, users: Greedy[User], age: Optional[Union[Age, ISODateTime]] = None) -> None:
         """
-        Clean messages of users from all public channels up to a certain message age (10 minutes by default).
+        Clean messages of `users` from all public channels up to a certain message `age` (10 minutes by default).
 
-        The age is *exclusive*, meaning that `10s` won't delete a message exactly 10 seconds old.
+        Requires 1 or more users to be specified. For channel-based cleaning, use `clean` instead.
+
+        `age` can be a duration or an ISO 8601 timestamp.
         """
+        if not users:
+            raise BadArgument("At least one user must be specified.")
+
         if age is None:
             age = await Age().convert(ctx, "10M")
+
         await self._clean_messages(ctx, channels="*", users=users, first_limit=age)
 
     # endregion
['bot/exts/moderation/clean.py']