summary refs log tree commit diff stats
path: root/src/commands.py
diff options
context:
space:
mode:
authorlatex <latex@disroot.org>2023-03-31 02:05:25 +0200
committerlatex <latex@disroot.org>2023-03-31 02:05:25 +0200
commit472b5b0e46dcadbc769b8b415aa6807297467e59 (patch)
tree37e5c0967ac7811867837ff6ffb829452b651184 /src/commands.py
parent9ed06f53fd8db5bf920a315f480e923eb2c6620f (diff)
downloadmumblecord-472b5b0e46dcadbc769b8b415aa6807297467e59.tar.gz
add commands: guilds, vc, activevc
Diffstat (limited to 'src/commands.py')
-rw-r--r--src/commands.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/commands.py b/src/commands.py
new file mode 100644
index 0000000..8a49e73
--- /dev/null
+++ b/src/commands.py
@@ -0,0 +1,64 @@
+import discord
+
+def register_all_commands(bot):
+    bot.register_command("guilds", cmd_guilds)
+    bot.register_command("vc", cmd_vc)
+    bot.register_command("activevc", cmd_activevc)
+
+def cmd_guilds(bot, text, user, arg, argv):
+    """
+    Show all guilds
+    """
+    response = ""
+    for guild in bot.discord.guilds:
+        response += f"{guild.id}: {guild.name}\n"
+
+    user.send_text_message(response)
+
+def cmd_vc(bot, text, user, arg, argv):
+    """
+    Show voice channels in all guilds,
+    or in a specific guild if the ID or name of guild has been given
+    """
+    if not argv:
+        response = ""
+        for guild in bot.discord.guilds:
+            response += f"{guild.id}: {guild.name}\n"
+            for vc in guild.voice_channels:
+                response += f">{vc.id}: {vc.name}\n"
+    else:
+        guild = None
+        try:
+            guild = discord.utils.find(lambda g: g.id == int(argv[0]), bot.discord.guilds)
+        except ValueError:
+            pass
+        if not guild:
+            guild = discord.utils.find(lambda g: g.name == arg, bot.discord.guilds)
+        if not guild:
+            user.send_text_message("no guild found")
+            return
+
+        response = f"{guild.name}: \n"
+        for vc in guild.voice_channels:
+            response += f">{vc.id}: {vc.name}\n"
+
+    user.send_text_message(response)
+
+def cmd_activevc(bot, text, user, arg, argv):
+    """
+    Show all voice channels with users inside
+    """
+    if not argv:
+        response = ""
+        for guild in bot.discord.guilds:
+            vcs_with_active_members = []
+            for vc in guild.voice_channels:
+                if len(vc.members) > 0:
+                    vcs_with_active_members.append(vc)
+            if len(vcs_with_active_members) > 0:
+                response += f"{guild.id}: {guild.name}\n"
+                for vc in vcs_with_active_members:
+                    response += f">{vc.id}: {vc.name} ({len(vc.members)})\n"
+                user.send_text_message(response)
+            else:
+                user.send_text_message("no active voice channels found")