Skip to content

Commit 9cae2be

Browse files
authored
Merge pull request #1 from JuhQ/spam-prevention/telegram-discord-links
Spam prevention for telegram and discord links
2 parents 42835a8 + 270659a commit 9cae2be

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

src/telegramBot/bridge/service.js

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,19 @@ const cyrillicPattern = /^\p{Script=Cyrillic}+$/u;
99
const { findCourseFromDb } = require("../../db/services/courseService");
1010
const { bridgedMessagesCounter } = require("../../promMetrics/promCounters");
1111

12+
13+
// github copilot generated function to prevent telegram & discord links
14+
const isMessageSafeToSend = (message) => {
15+
const telegramLinkPattern = /(https?:\/\/)?(www\.)?t(elegram)?\.me\/[a-zA-Z0-9\-_]*/g;
16+
const discordLinkPattern = /(https?:\/\/)?(www\.)?discord\.gg\/[a-zA-Z0-9\-_]*/g;
17+
18+
if (telegramLinkPattern.test(message) || discordLinkPattern.test(message)) {
19+
return false;
20+
}
21+
22+
return true;
23+
};
24+
1225
const validDiscordChannel = async (courseName) => {
1326
const guild = await discordClient.guilds.fetch(process.env.GUILD_ID);
1427
courseName = courseName.replace(/ /g, "-").toLowerCase();
@@ -48,6 +61,11 @@ const sendMessageToDiscord = async (ctx, message, channel) => {
4861
if (message.content.text && message.content.text[0] === "/") {
4962
return;
5063
}
64+
if(!isMessageSafeToSend(message.content.text)) {
65+
console.log("Message contains a telegram or discord link");
66+
return;
67+
}
68+
5169
const webhooks = await channel.fetchWebhooks();
5270
const webhook = webhooks.first();
5371
if (message.content.text) {
@@ -246,9 +264,10 @@ const validateContent = (content) => {
246264
};
247265

248266
const sendMessageToTelegram = async (telegramId, content, sender, channel) => {
249-
if (content === "") {
267+
if (content === "" || !isMessageSafeToSend(content)) {
250268
return;
251269
}
270+
252271
sender ? sender = escapeChars(sender) : sender = null;
253272
content = validateContent(content);
254273
try {

0 commit comments

Comments
 (0)