Modularized finding members by their username

This commit is contained in:
WatDuhHekBro 2020-08-27 22:46:40 -05:00
parent 8ca171e924
commit 3767a10829
2 changed files with 30 additions and 13 deletions

View File

@ -223,19 +223,9 @@ export default new Command({
description: "See how much money someone else has by using their username.",
async run($: CommonLibrary): Promise<any>
{
if($.guild)
{
const username = $.args.join(" ");
const member = (await $.guild.members.fetch({
query: username,
limit: 1
})).first();
if(member)
$.channel.send(getMoneyEmbed(member.user));
else
$.channel.send(`Couldn't find a user by the name of \`${username}\`!`);
}
$.callMemberByUsername($.message, $.args.join(" "), member => {
$.channel.send(getMoneyEmbed(member.user));
});
}
})
});

View File

@ -25,6 +25,8 @@ export interface CommonLibrary
ready: (...args: any[]) => void;
paginate: (message: Message, senderID: string, total: number, callback: (page: number) => void, duration?: number) => void;
prompt: (message: Message, senderID: string, onConfirm: () => void, duration?: number) => void;
getMemberByUsername: (guild: Guild, username: string) => Promise<GuildMember|undefined>;
callMemberByUsername: (message: Message, username: string, onSuccess: (member: GuildMember) => void) => Promise<void>;
// Dynamic Properties //
args: any[];
@ -216,6 +218,31 @@ $.prompt = async(message: Message, senderID: string, onConfirm: () => void, dura
message.delete();
};
$.getMemberByUsername = async(guild: Guild, username: string) => {
return (await guild.members.fetch({
query: username,
limit: 1
})).first();
};
/** Convenience function to handle false cases automatically. */
$.callMemberByUsername = async(message: Message, username: string, onSuccess: (member: GuildMember) => void) => {
const guild = message.guild;
const send = message.channel.send;
if(guild)
{
const member = await $.getMemberByUsername(guild, username);
if(member)
onSuccess(member);
else
send(`Couldn't find a user by the name of \`${username}\`!`);
}
else
send("You must execute this command in a server!");
};
/**
* Splits a command by spaces while accounting for quotes which capture string arguments.
* - `\"` = `"`