def karma(bot, event, name=None, *args): if name: if name[0] == '@': name = name[1:] lower_name = name.lower() for u in sorted(event.conv.users, key=lambda x: x.full_name.split()[-1]): if lower_name not in u.full_name.lower(): continue segments = [hangups.ChatMessageSegment('%s:' % u.full_name, is_bold=True), hangups.ChatMessageSegment('\n', hangups.SegmentType.LINE_BREAK), hangups.ChatMessageSegment('Karma: ' + str(UtilBot.get_current_karma(u.id_[0])))] bot.send_message_segments(event.conv, segments) return bot.send_message(event.conv, 'No user found matching "%s".' % name) else: karma_list = [] list_num = min(5, int(len(event.conv.users) / 2) + 1) for u in event.conv.users: karma_list.append((u.full_name, UtilBot.get_current_karma(u.id_[0]))) karma_list.sort(key=lambda x: -x[1]) segments = [hangups.ChatMessageSegment("Karma Stats:", is_bold=True), hangups.ChatMessageSegment("\n", segment_type=hangups.SegmentType.LINE_BREAK), hangups.ChatMessageSegment("Top:", is_italic=True), hangups.ChatMessageSegment("\n", segment_type=hangups.SegmentType.LINE_BREAK)] if len(event.conv.users) > 10: for i in range(0, min(list_num, len(event.conv.users))): segments.append(hangups.ChatMessageSegment("{}: {}".format(karma_list[i][0], karma_list[i][1]))) segments.append(hangups.ChatMessageSegment("\n", segment_type=hangups.SegmentType.LINE_BREAK)) segments.append(hangups.ChatMessageSegment("\n", segment_type=hangups.SegmentType.LINE_BREAK)) segments.append(hangups.ChatMessageSegment("Bottom:", is_italic=True)) segments.append(hangups.ChatMessageSegment("\n", segment_type=hangups.SegmentType.LINE_BREAK)) for i in range(-1, -min(list_num, len(event.conv.users)) - 1, -1): segments.append(hangups.ChatMessageSegment("{}: {}".format(karma_list[i][0], karma_list[i][1]))) segments.append(hangups.ChatMessageSegment("\n", segment_type=hangups.SegmentType.LINE_BREAK)) else: for i in range(0, len(event.conv.users)): segments.append(hangups.ChatMessageSegment("{}: {}".format(karma_list[i][0], karma_list[i][1]))) segments.append(hangups.ChatMessageSegment("\n", segment_type=hangups.SegmentType.LINE_BREAK)) segments.append(hangups.ChatMessageSegment("\n", segment_type=hangups.SegmentType.LINE_BREAK)) segments.append(hangups.ChatMessageSegment("Average Karma:", is_italic=True)) segments.append(hangups.ChatMessageSegment("\n", segment_type=hangups.SegmentType.LINE_BREAK)) segments.append(hangups.ChatMessageSegment('{}'.format((sum([i[1] for i in karma_list]) / len(karma_list))))) bot.send_message_segments(event.conv, segments)