import discord def register_all_commands(bot): bot.register_command("guilds", cmd_guilds) bot.register_command("listvc", cmd_listvc) bot.register_command("activevc", cmd_activevc) bot.register_command("vcinfo", cmd_vcinfo) 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_listvc(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") def cmd_vcinfo(bot, text, user, arg, argv): try: if len(argv) >= 1: vc_id = int(argv[0]) if len(argv) == 2: guild_id = int(argv[1]) except TypeError: user.send_text_message("strings are not allowed: please use the ID and not the name") if len(argv) == 1: guild_id = None vc = get_vc(bot.discord, guild_id, vc_id) if not vc: user.send_text_message("no vc found") response = f"""Name: {vc.name}
\n Guild: {vc.guild.name}
\n Members: {len(vc.members)}
\n """ if len(vc.members) > 0: response += "
\n" for member in vc.members: response += f"{member.name}
\n" user.send_text_message(response) def get_vc(ctx, guild, identifier): """ Try to get a Discord voice channel by ID ctx: discord.py context identifier: int: ID of the guild """ if not guild: for g in ctx.guilds: vc = discord.utils.find(lambda vc: vc.id == identifier, g.voice_channels) if vc is not None: return vc else: g = discord.utils.find(lambda g: g.id == identifier, ctx.guilds) if not g: return None vc = discord.utils.find(lambda vc: vc.id == identifier, g.voice_channels) return vc