Skip to content

Commit b8f30f1

Browse files
refactor: extract vxtwitter feature
1 parent 2d6a5d6 commit b8f30f1

File tree

2 files changed

+28
-24
lines changed

2 files changed

+28
-24
lines changed

src/handlers/handle-guild-message-creation.ts

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,7 @@ import { MessageType } from 'discord.js';
33

44
import { config } from '../config';
55
import { coolLinksManagement } from '../cool-links-management';
6-
7-
const urlMappings = [
8-
{
9-
pattern: /https?:\/\/(mobile\.)?twitter\.com\/(\S+)\/status\/(\d+)/g,
10-
replacement: 'https://vxtwitter.com/$2/status/$3',
11-
},
12-
];
6+
import { patternReplacement } from '../pattern-replacement';
137

148
export const handleGuildMessageCreation = async (message: Message) => {
159
if (message.author.bot) {
@@ -25,21 +19,5 @@ export const handleGuildMessageCreation = async (message: Message) => {
2519
return;
2620
}
2721

28-
let modifiedContent = message.content;
29-
let hasModification = false;
30-
31-
for (const { pattern, replacement } of urlMappings) {
32-
if (pattern.test(modifiedContent)) {
33-
modifiedContent = modifiedContent.replace(pattern, replacement);
34-
hasModification = true;
35-
}
36-
}
37-
38-
if (!hasModification) {
39-
return;
40-
}
41-
const newMessage = [`<@${message.author.id}>`, modifiedContent].join('\n');
42-
43-
await message.channel.send(newMessage);
44-
await message.delete();
22+
await patternReplacement(message);
4523
};

src/pattern-replacement.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import type { Message } from 'discord.js';
2+
3+
const urlMappings = [
4+
{
5+
pattern: /https?:\/\/(mobile\.)?twitter\.com\/(\S+)\/status\/(\d+)/g,
6+
replacement: 'https://vxtwitter.com/$2/status/$3',
7+
},
8+
];
9+
10+
export const patternReplacement = async (message: Message) => {
11+
let modifiedContent = message.content;
12+
13+
for (const { pattern, replacement } of urlMappings) {
14+
if (pattern.test(modifiedContent)) {
15+
modifiedContent = modifiedContent.replace(pattern, replacement);
16+
}
17+
}
18+
19+
const hasModification = message.content !== modifiedContent;
20+
if (!hasModification) return;
21+
22+
const newMessage = [`<@${message.author.id}>`, modifiedContent].join('\n');
23+
24+
await message.channel.send(newMessage);
25+
await message.delete();
26+
};

0 commit comments

Comments
 (0)