def show(self, ctx):
"""
Display the roster
The roster includes the name, Destiny 2 class,
and timezone of server members. Note that only
users who have set a role or timezone will be
displayed on the roster.
"""
manager = MessageManager(self.bot, ctx.author, ctx.channel, ctx.prefix, [ctx.message])
roster_groups = []
roster = self.bot.db.get_roster(ctx.guild.id)
if len(roster) != 0:
text = "```\n"
for row in roster:
# Add a single entry to the roster message
member = ctx.guild.get_member(row.get('user_id'))
role = row.get('role')
timezone = row.get('timezone')
if member:
name = member.display_name
formatted_name = (name[:16] + '..') if len(name) > 16 else name
role = role if role else "---"
timezone = timezone if timezone else "---"
text += '{:18} {:6} {:7}\n'.format(formatted_name, timezone, role)
# If the message is too big, place it into a group
if len(text) > 2000:
text += "```"
roster_groups.append(text)
text = "```\n"
# Add any remaining entries into a roster group
if len(text) > 5:
text += "```"
roster_groups.append(text)
# Send the initial roster message
embed_msg = discord.Embed(color=constants.BLUE)
embed_msg.title="{} Roster".format(ctx.guild.name)
embed_msg.description = roster_groups[0]
await manager.say(embed_msg, embed=True, delete=False)
# Send additional roster messages if the roster is too long
for group in roster_groups[1:]:
embed_msg = discord.Embed(color=constants.BLUE)
embed_msg.title="{} Roster (continued)".format(ctx.guild.name)
embed_msg.description = group
await manager.say(embed_msg, embed=True, delete=False)
else:
await manager.say("No roster exists yet. Use '{}roster settimezone' or '{}roster ".format(ctx.prefix, ctx.prefix)
+ "setclass' to add the first entry!")
await manager.clear()
评论列表
文章目录