From 348dcb27bf25f0a46918b0f62eb3f5e1a2754387 Mon Sep 17 00:00:00 2001 From: Will Hunt <half-shot@molrams.com> Date: Mon, 18 Sep 2017 00:45:10 +0100 Subject: [PATCH] Fix more mention match cases for issue 46 --- src/messageprocessor.ts | 7 +++++-- test/mocks/user.ts | 1 + test/test_messageprocessor.ts | 13 ++++++++++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/messageprocessor.ts b/src/messageprocessor.ts index 1cccba6..283b401 100644 --- a/src/messageprocessor.ts +++ b/src/messageprocessor.ts @@ -106,9 +106,12 @@ export class MessageProcessor { public FindMentionsInPlainBody(body: string, members: Discord.GuildMember[]): string { for (const member of members) { - const regex = new RegExp(`\\b(${escapeStringRegexp(member.displayName)})(?=\\b)` , "mg"); + const matcher = escapeStringRegexp(member.user.username + "#" + member.user.discriminator) + "|" + + escapeStringRegexp(member.displayName); body = body.replace( - regex, `<@!${member.id}>`, + new RegExp( + `\\b(${matcher})(?=\\b)` + , "mig"), `<@!${member.id}>`, ); } return body; diff --git a/test/mocks/user.ts b/test/mocks/user.ts index d66db47..a2d7574 100644 --- a/test/mocks/user.ts +++ b/test/mocks/user.ts @@ -1,6 +1,7 @@ export class MockUser { public id = ""; public username: string; + public discriminator: string; constructor(id: string, username: string = "") { this.id = id; this.username = username; diff --git a/test/test_messageprocessor.ts b/test/test_messageprocessor.ts index de0f6be..bc75679 100644 --- a/test/test_messageprocessor.ts +++ b/test/test_messageprocessor.ts @@ -122,11 +122,17 @@ describe("MessageProcessor", () => { user: { username: "TestUsername", id: "12345", + discriminator: "54321", }, })]; - const msg = "Hello TestUsername"; - const content = processor.FindMentionsInPlainBody(msg, members); - Chai.assert.equal(content, "Hello <@!12345>"); + Chai.assert.equal( + processor.FindMentionsInPlainBody("Hello TestUsername", members), + "Hello <@!12345>", + ); + Chai.assert.equal( + processor.FindMentionsInPlainBody("Hello TestUsername#54321", members), + "Hello <@!12345>", + ); }); it("processes mentioned nickname correctly", async () => { const processor = new MessageProcessor(new MessageProcessorOpts("localhost"), <DiscordBot> bot); @@ -148,6 +154,7 @@ describe("MessageProcessor", () => { Chai.assert.equal(processor.FindMentionsInPlainBody("TestNickname: Hello", members), "<@!12345>: Hello"); Chai.assert.equal(processor.FindMentionsInPlainBody("TestNickname, Hello", members), "<@!12345>, Hello"); Chai.assert.equal(processor.FindMentionsInPlainBody("TestNickname Hello", members), "<@!12345> Hello"); + Chai.assert.equal(processor.FindMentionsInPlainBody("testNicKName Hello", members), "<@!12345> Hello"); Chai.assert.equal( processor.FindMentionsInPlainBody("I wish TestNickname was here", members), "I wish <@!12345> was here", -- GitLab