From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on gnuweeb.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NO_DNS_FOR_FROM,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 Received: from localhost.localdomain (unknown [101.128.126.198]) by gnuweeb.org (Postfix) with ESMTPSA id 70FBF804D1; Wed, 9 Nov 2022 02:50:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=default; t=1667962219; bh=m0svCYKZCXGAu2lWW8eD1u4V6Puk/hld8QFmNpFxa3c=; h=From:To:Cc:Subject:Date:From; b=Wl50KCYr9na7c4h0JEwEXxrw0nfvv02VMzMPgZQJzFLUuWz27cHZTRY2LDRzbDULf E2VnAUxQdyx5JflL0MuK8cCb6AeJRi8Jzj3TC1F//tmWTtntN5yOwJsp/gWVaZabVb BFQ1H5Oh2RXqliAFB4rtnaDE3EXCUnSkf7tszTyu0D5rFuBOW+Ezgt2VV8TltBWz11 2SHBtcCTnjn/IR6wq/LqkaeDEHqllNMfmLVs8AzFSuNMr4Lgh2TkJDV0r/E8KSq1rv +H+lAdQRvTA7ESAKgYxedhOS6olM0h/vLZqij3wCa8OtVvqoYnN9qGBuHfhHcjbM1k MfDEC23XtSdCQ== From: Muhammad Rizki To: Ammar Faizi Cc: Muhammad Rizki , Alviro Iskandar Setiawan , GNU/Weeb Mailing List Subject: [PATCH v2 00/17] Fix, improvement and implement a bot logger. Date: Wed, 9 Nov 2022 09:49:45 +0700 Message-Id: <20221109025002.258-1-kiizuha@gnuweeb.org> X-Mailer: git-send-email 2.34.1.windows.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: Hi sir. This is a v2 revision of fix, improvement and implement a bot logger. this revision is to improve create_template() caption substr/trim, prepare_patch() for the .patch file payload, remove unrelevant changelog commit in the commit description, use html.escape() once instead of twice, small change in the first commit to make it clearer. This series contains fixes in the utility file and some improvement for it. I also implement a bot logger to log an error to the terminal and to the log file, if error may happen it will send the log file to the log channel either for Discord or Telegram, the LOG_CHANNEL_ID is declared in the config.py.example, copy the channel ID from the Discord or Telegram channel and then paste to the config.py.example. There are 17 patches in this series: - Patch 1 is to fix a typo on _flood_exception() for the Discord bot. - Patch 2 is to fix a prepare_patch() to have a full email payload. - Patch 3 is to add a substr/trim caption on the create_template(). - Patch 4 is to fix an extract_list() when there is no receipients. - Patch 5 is to use the old one method, use decode=True in get_payload() - Patch 6 is to improve fix_utf8_char(), make sure to unescape the HTML. - Patch 7 is to add a utility catch_err() function to get error message. - Patch 8 is to just add an initial BotLogger() to use it in next commit - Patch 9 is to use the created BotLogger() for the Telegram bot. - Patch 10 is to add a Telegram LOG_CHANNEL_ID for the send_log_file(). - Patch 11 is to add a send_log_file() for the Telegram bot DaemonClient - Patch 12 is to implement the log message and send log file for TG bot. - Patch 13 is to add a Discord LOG_CHANNEL_ID for the send_log_file(). - Patch 14 is to use the created BotLogger() for the Discord bot. - Patch 15 is to add a send_log_file() for the Discord bot GWClient(). - Patch 16 is to implement the log message and send log file for DC bot. - Patch 17 is to remove unused imports. What's new? - Implementation of the BotLogger to log error message. - Add a catch_err() in the atom/utils.py. - Add a send_log_file() in each bot client.py. - Add a variable LOG_CHANNEL_ID to configure the log channel. What's changed? - Some utility functions are fixed and improved. - Fix typo on _flood_exception() How to set log channel ID for the Telegram bot: 1. Make a channel for log in the Telegram. 2. Copy the channel ID, if you unable to see the ID you can use API or bot who has the feature, or use a 64gram desktop. 3. Paste the copied ID into the config.py in the telegram directory. How to set log channel ID for the Discord bot: 1. Make a channel for log in your Discord server. 2. Copy the channel ID by right click and copy, if you unable to get the ID you can go to your account settings, then enable the `Developer mode` or use bot who has the feature. 3. Paste the copied ID into the config.py in the dscord directory. How to use: 1. Execute the db.sql file in the daemon directory. 2. Setup .env file, the example is there with suffix .example, this file name must remove the suffix name .example. 3. Set up the config.py in each bot directory, such as dscord and telegram. The example is there with suffix .example & the file name must remove suffix name .example. 4. Run `pip3 install -r requirements.txt` in each bot directory. 5. STORAGE_DIR env value must `storage` to make it work fine. 6. Run the bot by `python3 dc.py` or `python3 tg.py`. Tested and works, please give it a test, thanks! ## Changelog v1 -> v2: - Improvement on the create_template() for the substr/trim caption. - Fix the prepare_patch() to use the full email payload instead of the trimmed caption taken from the `text` parameter. - Remove unrelevant changelog in the commit description. - Small change in the first commit description to make it clearer to read. Signed-off-by: Muhammad Rizki --- Muhammad Rizki (17): discord: Fix typo on _flood_exception() fix: utils: Fix .patch file payload fix: utils: add a substr for the patch media caption fix: utils: Fix the extract_list() utility function utils: Back to use decode=True for the get_payload() utils: Improve fix_utf8_char() utils: Add catch_err() for the log message logger: Initial work for the bot logger for future use telegram: Use the created BotLogger() class telegram: Add variable LOG_CHANNEL_ID declaration telegram: Add send_log_file() in the DaemonClient() telegram: Implement the log message for catching errors discord: Add variable LOG_CHANNEL_ID declaration discord: Use the BotLogger() to the GWClient() discord: Add send_log_file in the GWClient() discord: Implement the catch erros and logs Remove some unused imports daemon/atom/utils.py | 53 +++++++++++-------- daemon/dc.py | 10 +++- daemon/dscord/config.py.example | 4 ++ daemon/dscord/gnuweeb/client.py | 20 +++++-- daemon/dscord/gnuweeb/filters.py | 10 ++-- .../dscord/gnuweeb/plugins/events/on_ready.py | 2 +- .../plugins/slash_commands/get_lore_mail.py | 12 +++-- daemon/dscord/mailer/listener.py | 41 +++++++------- daemon/logger/__init__.py | 1 + daemon/logger/log.py | 52 ++++++++++++++++++ daemon/telegram/config.py.example | 4 ++ daemon/telegram/mailer/listener.py | 44 +++++++++------ daemon/telegram/packages/client.py | 21 ++++++-- daemon/telegram/packages/decorator.py | 15 +++--- .../packages/plugins/commands/scrape.py | 10 +++- daemon/tg.py | 5 ++ 16 files changed, 222 insertions(+), 82 deletions(-) create mode 100644 daemon/logger/__init__.py create mode 100644 daemon/logger/log.py base-commit: 91e86e6d1004da4526ca5514fa009bc253d5c4a3 -- Muhammad Rizki