From d45829b4af237b34e6a7590ee96ca08136870adc Mon Sep 17 00:00:00 2001 From: Mroik Date: Fri, 12 Apr 2024 17:02:57 +0200 Subject: Rewrite project --- config.py | 14 +++++++------- main.py | 4 ++-- telegrambot.py | 28 ++++++++++------------------ userbot.py | 56 ++++++++++++++------------------------------------------ 4 files changed, 33 insertions(+), 69 deletions(-) diff --git a/config.py b/config.py index 8466aa3..145b572 100644 --- a/config.py +++ b/config.py @@ -1,9 +1,9 @@ from os import environ -API_ID = environ.get("TELEGRAM_API_ID") -API_HASH = environ.get("TELEGRAM_API_HASH") -GROUP_ID = environ.get("TELEGRAM_GROUP_ID") -WORDLIST = [] # List of words to be notified about -BOT_TOKEN = environ.get("TELEGRAM_BOT_TOKEN") -BOT_ID = environ.get("TELEGRAM_BOT_ID") -USER_ID = environ.get("TELEGRAM_USER_ID") +BOT_TOKEN = environ.get("BOT_TOKEN") +CHANNEL_ID = environ.get("CHANNEL_ID") +USER_ID = environ.get("USER_ID") +API_ID = environ.get("API_ID") +API_HASH = environ.get("API_HASH") +BOTNICK = environ.get("BOTNICK") +WORDLIST = [] diff --git a/main.py b/main.py index 82fb745..bd1caa3 100644 --- a/main.py +++ b/main.py @@ -1,10 +1,10 @@ -from telegrambot import updater +from telegrambot import app from userbot import client def main(): client.start() - updater.start_polling() + app.run_polling() client.run_until_disconnected() diff --git a/telegrambot.py b/telegrambot.py index e750240..af3fd5a 100644 --- a/telegrambot.py +++ b/telegrambot.py @@ -1,24 +1,16 @@ import logging +from telegram import Update +from telegram.ext import ApplicationBuilder, ContextTypes, MessageHandler, filters +from config import BOT_TOKEN, CHANNEL_ID, USER_ID -from telegram.ext import Updater, Dispatcher, CallbackContext, MessageHandler -from telegram.ext.filters import Filters -from telegram import Bot, Update -from config import BOT_TOKEN, USER_ID, GROUP_ID - - -LOG = logging.getLogger(__name__) -updater = Updater(token=BOT_TOKEN) -disp: Dispatcher = updater.dispatcher -bot: Bot = updater.bot - - -def handle_msg_rec(update: Update, context: CallbackContext) -> None: +async def relay(update: Update, context: ContextTypes.DEFAULT_TYPE): if update.message.from_user.id != int(USER_ID): return - update.message.forward(int(GROUP_ID)) - LOG.info(f"Message from {update.message.from_user.id} was forwarded to {GROUP_ID}") - update.message.delete() - + await update.message.forward(int(CHANNEL_ID)) + LOG.info(f"Message from {update.message.from_user.name} was forwarded to {CHANNEL_ID}") + await update.message.delete() -disp.add_handler(MessageHandler(Filters.update, callback=handle_msg_rec)) +LOG = logging.getLogger(__name__) +app = ApplicationBuilder().token(BOT_TOKEN).build() +app.add_handler(MessageHandler(filters.ALL, relay)) diff --git a/userbot.py b/userbot.py index bd390d6..d9d0f79 100644 --- a/userbot.py +++ b/userbot.py @@ -1,47 +1,19 @@ -import re -import logging - from telethon import TelegramClient, events -from telethon.tl.types import PeerUser - -from config import API_ID, API_HASH, WORDLIST, BOT_ID +from telethon.tl.patched import Message +from telethon.tl.types import Chat +from config import API_ID, API_HASH, WORDLIST, BOTNICK - -LOG = logging.getLogger(__name__) -client = TelegramClient("notify me on untagged", API_ID, API_HASH) +client = TelegramClient("notify-on-untagged", int(API_ID), API_HASH) client.parse_mode = "markdown" -@client.on(events.NewMessage()) -async def handler(event: events.NewMessage.Event): - me = await client.get_me() - from_ = event.message.from_id - chan = event.message.peer_id - message = event.message - - if isinstance(event.message.peer_id, PeerUser): - return - if int(BOT_ID) == from_.user_id: - return - if from_.user_id == me.id: - return - if message.message == "" or message.message is None: - return - if message.mentioned: - return - for word in WORDLIST: - if f" {word.upper()} " in message.message.upper()\ - or message.message.upper().startswith(f"{word.upper()} ")\ - or message.message.upper().endswith(f" {word.upper()}"): - msg = f"[{from_.user_id}](tg://user?id={from_.user_id}) tagged you in" - msg += f" [{chan.channel_id}](https://t.me/c/{chan.channel_id}/{str(message.id)}):\n" - found = re.search(f"{word.upper()}", message.message.upper()) - if found is None: - msg += f"{message.message}" - else: - msg += f"{message.message[:found.start()]}__"\ - f"{message.message[found.start():found.end()]}__"\ - f"{message.message[found.end():]}" - await client.send_message(await client.get_input_entity(int(BOT_ID)), msg) - LOG.info(f"Message from {from_.user_id} was sent to BOT {BOT_ID}") - return +@client.on(events.NewMessage) +async def check_message(event): + message: Message = event.message + c: Chat = await message.get_chat() + found = len(list(filter(lambda x: x in message.message, WORDLIST))) > 0 + if found: + print(f"[{message.chat_id}](https://t.me/c/{message.chat_id}/{message.id})") + to_send = f"[{message.from_id.user_id}](tg://user?id={message.from_id.user_id}) " + to_send += f"tagged you in [{c.id}](https://t.me/c/{c.id}/{message.id})" + await client.send_message(BOTNICK, to_send) -- cgit v1.3