1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-23 19:44:20 +00:00
royalnet/royalpack/commands/cv.py
2019-11-28 17:54:36 +01:00

117 lines
5.7 KiB
Python

from royalnet.commands import *
class CvCommand(Command):
name: str = "cv"
description: str = "Elenca le persone attualmente connesse alla chat vocale."
syntax: str = "[guildname] [all]"
# @staticmethod
# async def _legacy_cv_handler(bot: DiscordBot, guild_name: typing.Optional[str], everyone: bool):
# # Find the matching guild
# if guild_name:
# guilds: typing.List[discord.Guild] = bot.client.find_guild_by_name(guild_name)
# else:
# guilds = bot.client.guilds
# if len(guilds) == 0:
# raise CommandError("No guilds with the specified name found.")
# if len(guilds) > 1:
# raise CommandError("Multiple guilds with the specified name found.")
# guild = list(bot.client.guilds)[0]
# # Edit the message, sorted by channel
# discord_members = list(guild.members)
# channels = {0: None}
# members_in_channels = {0: []}
# message = ""
# # Find all the channels
# for member in discord_members:
# if member.voice is not None:
# channel = members_in_channels.get(member.voice.channel.id)
# if channel is None:
# members_in_channels[member.voice.channel.id] = list()
# channel = members_in_channels[member.voice.channel.id]
# channels[member.voice.channel.id] = member.voice.channel
# channel.append(member)
# else:
# members_in_channels[0].append(member)
# # Edit the message, sorted by channel
# for channel in sorted(channels, key=lambda c: -c):
# members_in_channels[channel].sort(key=lambda x: x.nick if x.nick is not None else x.name)
# if channel == 0 and len(members_in_channels[0]) > 0:
# message += "[b]Non in chat vocale:[/b]\n"
# else:
# message += f"[b]In #{channels[channel].name}:[/b]\n"
# for member in members_in_channels[channel]:
# member: typing.Union[discord.User, discord.Member]
# # Ignore not-connected non-notable members
# if not everyone and channel == 0 and len(member.roles) < 2:
# continue
# # Ignore offline members
# if member.status == discord.Status.offline and member.voice is None:
# continue
# # Online status emoji
# if member.bot:
# message += "🤖 "
# elif member.status == discord.Status.online:
# message += "🔵 "
# elif member.status == discord.Status.idle:
# message += "⚫ "
# elif member.status == discord.Status.dnd:
# message += "🔴 "
# elif member.status == discord.Status.offline:
# message += "⚪ "
# # Voice
# if channel != 0:
# # Voice status
# if member.voice.afk:
# message += "💤 "
# elif member.voice.self_deaf or member.voice.deaf:
# message += "🔇 "
# elif member.voice.self_mute or member.voice.mute:
# message += "🔈 "
# elif member.voice.self_video or member.voice.self_stream:
# message += "🖥 "
# else:
# message += "🔊 "
# # Nickname
# # if member.nick is not None:
# # message += f"[i]{member.nick}[/i]"
# # else:
# message += member.name
# # Game or stream
# if member.activity is not None:
# if member.activity.type == discord.ActivityType.playing:
# message += f" | 🎮 {member.activity.name}"
# # Rich presence
# try:
# if member.activity.state is not None:
# message += f" ({member.activity.state}" \
# f" | {member.activity.details})"
# except AttributeError:
# pass
# elif member.activity.type == discord.ActivityType.streaming:
# message += f" | 📡 {member.activity.url}"
# elif member.activity.type == discord.ActivityType.listening:
# if isinstance(member.activity, discord.Spotify):
# if member.activity.title == member.activity.album:
# message += f" | 🎧 {member.activity.title} ({andformat(member.activity.artists, final=' e ')})"
# else:
# message += f" | 🎧 {member.activity.title} ({member.activity.album} | {andformat(member.activity.artists, final=' e ')})"
# else:
# message += f" | 🎧 {member.activity.name}"
# elif member.activity.type == discord.ActivityType.watching:
# message += f" | 📺 {member.activity.name}"
# else:
# message += f" | ❓ {member.activity.state}"
# message += "\n"
# message += "\n"
# return {"response": message}
def __init__(self, interface: CommandInterface):
super().__init__(interface)
async def run(self, args: CommandArgs, data: CommandData) -> None:
response = await self.interface.call_herald_event("discord", "discord_cv")
breakpoint()