diff --git a/src/commands/money.ts b/src/commands/money.ts index 332642b..23b55b7 100644 --- a/src/commands/money.ts +++ b/src/commands/money.ts @@ -223,19 +223,9 @@ export default new Command({ description: "See how much money someone else has by using their username.", async run($: CommonLibrary): Promise { - 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)); + }); } }) }); \ No newline at end of file diff --git a/src/core/lib.ts b/src/core/lib.ts index a92ff9a..77fa0ab 100644 --- a/src/core/lib.ts +++ b/src/core/lib.ts @@ -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; + callMemberByUsername: (message: Message, username: string, onSuccess: (member: GuildMember) => void) => Promise; // 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. * - `\"` = `"`