search: add --case-sensitive/--cs flag; show nicknames in the results

This commit is contained in:
Dragory 2019-04-13 03:24:02 +03:00
parent fdd9bd93c5
commit fbcf5d7cb8

View file

@ -215,12 +215,17 @@ export class UtilityPlugin extends ZeppelinPlugin<IUtilityPluginConfig> {
name: "sort", name: "sort",
type: "string", type: "string",
}, },
{
name: "case-sensitive",
type: "boolean",
shortcut: "cs",
},
], ],
}) })
@d.permission("can_search") @d.permission("can_search")
async searchCmd( async searchCmd(
msg: Message, msg: Message,
args: { query?: string; role?: string; page?: number; voice?: boolean; sort?: string }, args: { query?: string; role?: string; page?: number; voice?: boolean; sort?: string; "case-sensitive"?: boolean },
) { ) {
let matchingMembers = Array.from(this.guild.members.values()); let matchingMembers = Array.from(this.guild.members.values());
@ -240,12 +245,18 @@ export class UtilityPlugin extends ZeppelinPlugin<IUtilityPluginConfig> {
} }
if (args.query) { if (args.query) {
const query = args.query.toLowerCase(); const query = args["case-sensitive"] ? args.query : args.query.toLowerCase();
matchingMembers = matchingMembers.filter(member => { matchingMembers = matchingMembers.filter(member => {
const fullUsername = `${member.user.username}#${member.user.discriminator}`; const nick = args["case-sensitive"] ? member.nick : member.nick && member.nick.toLowerCase();
if (member.nick && member.nick.toLowerCase().indexOf(query) !== -1) return true;
if (fullUsername.toLowerCase().indexOf(query) !== -1) return true; const fullUsername = args["case-sensitive"]
? `${member.user.username}#${member.user.discriminator}`
: `${member.user.username}#${member.user.discriminator}`.toLowerCase();
if (nick && nick.indexOf(query) !== -1) return true;
if (fullUsername.indexOf(query) !== -1) return true;
return false; return false;
}); });
} }
@ -285,7 +296,9 @@ export class UtilityPlugin extends ZeppelinPlugin<IUtilityPluginConfig> {
const longestId = pageMembers.reduce((longest, member) => Math.max(longest, member.id.length), 0); const longestId = pageMembers.reduce((longest, member) => Math.max(longest, member.id.length), 0);
const lines = pageMembers.map(member => { const lines = pageMembers.map(member => {
const paddedId = member.id.padEnd(longestId, " "); const paddedId = member.id.padEnd(longestId, " ");
return `${paddedId} ${member.user.username}#${member.user.discriminator}`; let line = `${paddedId} ${member.user.username}#${member.user.discriminator}`;
if (member.nick) line += ` (${member.nick})`;
return line;
}); });
const footer = paginated ? "Use --page=n to browse results" : ""; const footer = paginated ? "Use --page=n to browse results" : "";