def channelinfo(self, ctx, *, channel: int = None):
"""Shows channel information"""
if not channel:
channel = ctx.message.channel
else:
channel = self.bot.get_channel(channel)
data = discord.Embed()
if hasattr(channel, 'mention'):
data.description = "**Information about Channel:** " + channel.mention
if hasattr(channel, 'changed_roles'):
if len(channel.changed_roles) > 0:
data.color = discord.Colour.green() if channel.changed_roles[0].permissions.read_messages else discord.Colour.red()
if isinstance(channel, discord.TextChannel):
_type = "Text"
elif isinstance(channel, discord.VoiceChannel):
_type = "Voice"
else:
_type = "Unknown"
data.add_field(name="Type", value=_type)
data.add_field(name="ID", value=channel.id, inline=False)
if hasattr(channel, 'position'):
data.add_field(name="Position", value=channel.position)
if isinstance(channel, discord.VoiceChannel):
if channel.user_limit != 0:
data.add_field(name="User Number", value="{}/{}".format(len(channel.voice_members), channel.user_limit))
else:
data.add_field(name="User Number", value="{}".format(len(channel.voice_members)))
userlist = [r.display_name for r in channel.members]
if not userlist:
userlist = "None"
else:
userlist = "\n".join(userlist)
data.add_field(name="Users", value=userlist)
data.add_field(name="Bitrate", value=channel.bitrate)
elif isinstance(channel, discord.TextChannel):
try:
pins = await channel.pins()
data.add_field(name="Pins", value=len(pins), inline=True)
except discord.Forbidden:
pass
data.add_field(name="Members", value="%s"%len(channel.members))
if channel.topic:
data.add_field(name="Topic", value=channel.topic, inline=False)
hidden = []
allowed = []
for role in channel.changed_roles:
if role.permissions.read_messages is True:
if role.name != "@everyone":
allowed.append(role.mention)
elif role.permissions.read_messages is False:
if role.name != "@everyone":
hidden.append(role.mention)
if len(allowed) > 0:
data.add_field(name='Allowed Roles ({})'.format(len(allowed)), value=', '.join(allowed), inline=False)
if len(hidden) > 0:
data.add_field(name='Restricted Roles ({})'.format(len(hidden)), value=', '.join(hidden), inline=False)
if channel.created_at:
data.set_footer(text=("Created on {} ({} days ago)".format(channel.created_at.strftime("%d %b %Y %H:%M"), (ctx.message.created_at - channel.created_at).days)))
await ctx.send(embed=data)
评论列表
文章目录