diff --git a/src/bot/features/isLCMGroup.ts b/src/bot/features/isLCMGroup.ts deleted file mode 100644 index 8f27cf7..0000000 --- a/src/bot/features/isLCMGroup.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { Composer } from "grammy"; -import type { Context } from "#root/bot/context.js"; -import { logHandle } from "#root/bot/helpers/logging.js"; - -const composer = new Composer(); - -const feature = composer.chatType(["group", "supergroup"]); - -feature.hears( - "/isLCMGroup", - logHandle("is-LCM-group"), - async (ctx: Context) => { - const GROUP_IDS = process.env.GROUP_IDS - ? process.env.GROUP_IDS.split(",") - : undefined; - - if (ctx.chat && ctx.msg) { - const groupID = ctx.chat.id; - - if (GROUP_IDS !== undefined) { - const flag = GROUP_IDS.includes(`${groupID}`); - - if (flag) { - await ctx.reply( - `This group is in the whitelisted and is a part of the LCM Telegram groups/communities\\. I should be deleting any Twitter/X links and reformatting services within this group\\.`, - { - parse_mode: "MarkdownV2", - reply_parameters: { message_id: ctx.msg.message_id } - } - ); - } - - if (!flag) { - await ctx.reply( - `This group is NOT in the whitelisted and is NOT a part of the LCM Telegram groups/communities\\. I am a bot designed to delete any Twitter/X links and reformatting services within groups\\. You can fork me from this link: https://github\\.com/lucid\\-creations\\-media/no\\-twitter\\-bot and deploy me for use in your own groups\\!`, - { - parse_mode: "MarkdownV2", - reply_parameters: { message_id: ctx.msg.message_id } - } - ); - } - } - - if (!GROUP_IDS) { - await ctx.reply( - `There was a problem retrieving the whitelist\\. Check the env variables and try again\\.`, - { - parse_mode: "MarkdownV2", - reply_parameters: { message_id: ctx.msg.message_id } - } - ); - } - } - } -); - -export { composer as isLCMGroup }; diff --git a/src/bot/features/isWKCGroup.ts b/src/bot/features/isWKCGroup.ts new file mode 100644 index 0000000..2be35f0 --- /dev/null +++ b/src/bot/features/isWKCGroup.ts @@ -0,0 +1,80 @@ +import { Composer } from "grammy"; +import type { Context } from "#root/bot/context.js"; +import { logHandle } from "#root/bot/helpers/logging.js"; + +const composer = new Composer(); + +const feature = composer.chatType(["group", "supergroup"]); + +/** + * What triggers this feature and adds to the log when it has been triggered. + * The trigger is the command "/isWKCGroup" + */ +feature.hears( + "/isWKCGroup", + logHandle("is-WKC-group"), + async (ctx: Context) => { + // Pulling the group IDs from the env variables. + const GROUP_IDS = process.env.GROUP_IDS + ? process.env.GROUP_IDS.split(",") + : undefined; + + // Checking that context has chat, msg, and msg.from properties + if (ctx.chat && ctx.msg && ctx.msg.from) { + const groupID = ctx.chat.id; + const chatMember = await ctx.getChatMember(ctx.msg.from.id); + + // Checking if the user is an admin. + if (["creator", "administrator"].includes(chatMember.status)) { + if (GROUP_IDS !== undefined) { + const flag = GROUP_IDS.includes(`${groupID}`); + + // Checking if the group is whitelisted. + if (flag) { + // Confirming that the group is whitelisted and should be deleting detected messages. + await ctx.reply( + `This group is in the whitelisted and is a part of the WKC Telegram groups/communities\\. I should be deleting any Twitter/X and Meta links along with corresponding reformatting services within this group\\.`, + { + parse_mode: "MarkdownV2", + reply_parameters: { message_id: ctx.msg.message_id } + } + ); + } + + if (!flag) { + // Informing the user that features are blocked because the group is not in the whitelist. + await ctx.reply( + `This group is NOT in the whitelisted and is NOT a part of the WKC Telegram groups/communities\\. I am a bot designed to delete any Twitter/X and Meta links along with corresponding reformatting services within groups\\. You can fork me from this link: https://github\\.com/lucid\\-creations\\-media/no\\-twitter\\-bot and deploy me for use in your own groups\\!`, + { + parse_mode: "MarkdownV2", + reply_parameters: { message_id: ctx.msg.message_id } + } + ); + } + } + + if (!GROUP_IDS) { + // Altering that the whitelist is not set or the bot cannot access it. + await ctx.reply( + `There was a problem retrieving the whitelist\\. Check the env variables and try again\\.`, + { + parse_mode: "MarkdownV2", + reply_parameters: { message_id: ctx.msg.message_id } + } + ); + } + } else { + // Informing the user that they need to be an admin to use this command. + await ctx.reply( + `You have to be an admin of this group to use this command\\!`, + { + parse_mode: "MarkdownV2", + reply_parameters: { message_id: ctx.msg.message_id } + } + ); + } + } + } +); + +export { composer as isWKCGroup }; diff --git a/src/bot/index.ts b/src/bot/index.ts index 0abe577..408da66 100644 --- a/src/bot/index.ts +++ b/src/bot/index.ts @@ -19,7 +19,7 @@ import { botInfoCommand } from "./features/botInfoCommand.js"; import { getGroupIDCommand } from "./features/getGroupIDCommand.js"; import { helpCommand } from "./features/helpCommand.js"; import { embedCheck } from "./features/embedCheck.js"; -import { isWKCGroup } from "./features/isLCMGroup.js"; +import { isWKCGroup } from "./features/isWKCGroup.js"; interface Dependencies { config: Config;