From: Muhammad Rizki <[email protected]>
To: Ammar Faizi <[email protected]>
Cc: Muhammad Rizki <[email protected]>,
GNU/Weeb Mailing List <[email protected]>
Subject: [PATCH v3 07/17] Re-design send email message to Telegram
Date: Fri, 22 Jul 2022 06:29:28 +0700 [thread overview]
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
From: Muhammad Rizki <[email protected]>
We want to separate send message function and inherit with the Pyrogram
Client, so it should makes the code clean and clear.
Signed-off-by: Muhammad Rizki <[email protected]>
---
daemon/packages/__init__.py | 1 +
daemon/packages/client.py | 64 +++++++++++++++++++++++++++++++++++++
daemon/run.py | 4 +--
daemon/scraper/bot.py | 35 ++++++--------------
4 files changed, 76 insertions(+), 28 deletions(-)
create mode 100644 daemon/packages/__init__.py
create mode 100644 daemon/packages/client.py
diff --git a/daemon/packages/__init__.py b/daemon/packages/__init__.py
new file mode 100644
index 0000000..efef9ae
--- /dev/null
+++ b/daemon/packages/__init__.py
@@ -0,0 +1 @@
+from .client import DaemonClient
diff --git a/daemon/packages/client.py b/daemon/packages/client.py
new file mode 100644
index 0000000..f73b913
--- /dev/null
+++ b/daemon/packages/client.py
@@ -0,0 +1,64 @@
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Copyright (C) 2022 Muhammad Rizki <[email protected]>
+#
+
+from pyrogram import Client
+from pyrogram.enums import ParseMode
+from pyrogram.types import Message, InlineKeyboardMarkup, InlineKeyboardButton
+from typing import Union, BinaryIO
+
+
+class DaemonClient(Client):
+ def __init__(self, name: str, api_id: int,
+ api_hash: str, **kwargs):
+ super().__init__(name, api_id,
+ api_hash, **kwargs)
+
+
+ async def send_text_email(
+ self,
+ chat_id: Union[int, str],
+ text: str,
+ reply_to: int,
+ url: str = None,
+ parse_mode: ParseMode = ParseMode.HTML
+ ) -> Message:
+ print("[send_text_email]")
+ return await self.send_message(
+ chat_id=chat_id,
+ text=text,
+ reply_to_message_id=reply_to,
+ parse_mode=parse_mode,
+ reply_markup=InlineKeyboardMarkup([
+ [InlineKeyboardButton(
+ "See the full message",
+ url=url
+ )]
+ ])
+ )
+
+
+ async def send_patch_email(
+ self,
+ chat_id: Union[int, str],
+ doc: Union[str, BinaryIO],
+ caption: str,
+ reply_to: int,
+ url: str = None,
+ parse_mode: ParseMode = ParseMode.HTML
+ ) -> Message:
+ print("[send_patch_email]")
+ return await self.send_document(
+ chat_id=chat_id,
+ document=doc,
+ caption=caption,
+ reply_to_message_id=reply_to,
+ parse_mode=parse_mode,
+ reply_markup=InlineKeyboardMarkup([
+ [InlineKeyboardButton(
+ "See the full message",
+ url=url
+ )]
+ ])
+ )
diff --git a/daemon/run.py b/daemon/run.py
index 83b2cdb..1151ccd 100644
--- a/daemon/run.py
+++ b/daemon/run.py
@@ -8,7 +8,7 @@ from apscheduler.schedulers.asyncio import AsyncIOScheduler
from scraper import BotMutexes
from dotenv import load_dotenv
from mysql import connector
-from pyrogram import Client
+from packages import DaemonClient
from scraper import Scraper
from scraper import Bot
import os
@@ -17,7 +17,7 @@ import os
def main():
load_dotenv()
- client = Client(
+ client = DaemonClient(
"storage/EmailScraper",
api_id=int(os.getenv("API_ID")),
api_hash=os.getenv("API_HASH"),
diff --git a/daemon/scraper/bot.py b/daemon/scraper/bot.py
index 2392b61..93e633a 100644
--- a/daemon/scraper/bot.py
+++ b/daemon/scraper/bot.py
@@ -8,7 +8,7 @@ from apscheduler.schedulers.asyncio import AsyncIOScheduler
from pyrogram.types import InlineKeyboardMarkup
from pyrogram.types import InlineKeyboardButton
from slugify import slugify
-from pyrogram import Client
+from packages import DaemonClient
from scraper import Scraper
from pyrogram import enums
from . import utils
@@ -32,12 +32,11 @@ class Bot():
]
TG_CHAT_IDS = [
- -1001394203410,
- -1001673279485,
+ "kiizuah"
]
- def __init__(self, client: Client, sched: AsyncIOScheduler,
+ def __init__(self, client: DaemonClient, sched: AsyncIOScheduler,
scraper: Scraper, mutexes: BotMutexes, conn):
self.client = client
self.sched = sched
@@ -123,8 +122,8 @@ class Bot():
reply_to, text, url)
else:
text = "#ml\n" + text
- m = await self.__send_text_msg(tg_chat_id, reply_to,
- text, url)
+ m = await self.__send_text_msg(tg_chat_id, text,
+ reply_to, url)
self.db.insert_telegram(email_id, m.chat.id, m.id)
for d, f in files:
@@ -161,10 +160,10 @@ class Bot():
async def __send_patch_msg(self, mail, tg_chat_id, reply_to, text, url):
print("[__send_patch_msg]")
- tmp, fnm, caption, url = Bot.prepare_send_patch(mail, text, url)
+ tmp, doc, caption, url = Bot.prepare_send_patch(mail, text, url)
ret = await self.__handle_telegram_floodwait(
- self.____send_patch_msg,
- *[tg_chat_id, reply_to, fnm, caption, url]
+ self.client.send_patch_email,
+ *[tg_chat_id, doc, caption, reply_to, url]
)
Bot.clean_up_after_send_patch(tmp)
return ret
@@ -207,7 +206,7 @@ class Bot():
async def __send_text_msg(self, *args):
return await self.__handle_telegram_floodwait(
- self.____send_text_msg,
+ self.client.send_text_email,
*args
)
@@ -251,19 +250,3 @@ class Bot():
)]
])
)
-
-
- async def ____send_text_msg(self, tg_chat_id, reply_to, text, url):
- print("[__send_text_msg]")
- return await self.client.send_message(
- tg_chat_id,
- text,
- reply_to_message_id=reply_to,
- parse_mode=enums.ParseMode.HTML,
- reply_markup=InlineKeyboardMarkup([
- [InlineKeyboardButton(
- "See the full message",
- url=url
- )]
- ])
- )
--
Muhammad Rizki
next prev parent reply other threads:[~2022-07-21 23:30 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-21 23:29 [PATCH v3 00/17] Code improvements Muhammad Rizki
2022-07-21 23:29 ` [PATCH v3 01/17] Fix __send_patch_msg function parameter Muhammad Rizki
2022-07-21 23:29 ` [PATCH v3 02/17] Fix import problem Muhammad Rizki
2022-07-21 23:29 ` [PATCH v3 03/17] Add default temporary directory Muhammad Rizki
2022-07-21 23:29 ` [PATCH v3 04/17] Move the Telegram bot session into the storage directory Muhammad Rizki
2022-07-21 23:29 ` [PATCH v3 05/17] daemon: Fix raw lore URL on the inline keyboard button Muhammad Rizki
2022-07-21 23:29 ` [PATCH v3 06/17] daemon: Use traceback.format_exc() to get the error detail Muhammad Rizki
2022-07-21 23:29 ` Muhammad Rizki [this message]
2022-07-21 23:29 ` [PATCH v3 08/17] Move ____send_patch_msg Muhammad Rizki
2022-07-21 23:29 ` [PATCH v3 09/17] Move prepare for patch and clean up patch functions Muhammad Rizki
2022-07-21 23:29 ` [PATCH v3 10/17] Create fix_utf8_chars function Muhammad Rizki
2022-07-21 23:29 ` [PATCH v3 11/17] Remove whitespace Muhammad Rizki
2022-07-21 23:29 ` [PATCH v3 12/17] Remove prepare patch and clean up patch Muhammad Rizki
2022-07-21 23:29 ` [PATCH v3 13/17] daemon: Add @handle_flood decorator and remove some functions Muhammad Rizki
2022-07-21 23:29 ` [PATCH v3 14/17] daemon: Remove __send_patch_msg() Muhammad Rizki
2022-07-21 23:29 ` [PATCH v3 15/17] daemon: Remove unused imports Muhammad Rizki
2022-07-21 23:29 ` [PATCH v3 16/17] Replace send email functions Muhammad Rizki
2022-07-21 23:29 ` [PATCH v3 17/17] Add typing in decorator Muhammad Rizki
2022-07-22 10:57 ` [PATCH v3 00/17] Code improvements Ammar Faizi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox