diff options
author | hyfc <[email protected]> | 2018-07-15 23:16:03 +0800 |
---|---|---|
committer | hyfc <[email protected]> | 2020-10-22 11:37:46 +0800 |
commit | 01541d3182371f24a7f46ac889003b04cba09919 (patch) | |
tree | 52b977182632e6bfefa9477205addee47db9d1b3 | |
parent | e1fd96feb48a0f7deabafa3ddb2f2daf3ba6a8b8 (diff) | |
download | telegram-mail-bot-01541d3182371f24a7f46ac889003b04cba09919.tar.gz telegram-mail-bot-01541d3182371f24a7f46ac889003b04cba09919.tar.bz2 telegram-mail-bot-01541d3182371f24a7f46ac889003b04cba09919.zip |
add periodic task
-rw-r--r-- | Pipfile | 1 | ||||
-rw-r--r-- | Pipfile.lock | 57 | ||||
-rw-r--r-- | bot.py | 21 |
3 files changed, 64 insertions, 15 deletions
@@ -7,6 +7,7 @@ name = "pypi" pytz = "*" python-telegram-bot = "*" pyzmail36 = "*" +schedule = "*" [dev-packages] pylint = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 1862db6..b70305f 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "65ffd10327170095842dff53978ba96e55245c9e61073a9fca7cc117a9bdf85b" + "sha256": "6f87426f7508c223525fced9e8b6552a833fc6402296d17b95700ffe186e3f02" }, "pipfile-spec": 6, "requires": { @@ -39,11 +39,11 @@ }, "pytz": { "hashes": [ - "sha256:65ae0c8101309c45772196b21b74c46b2e5d11b6275c45d251b150d5da334555", - "sha256:c06425302f2cf668f1bba7a0a03f3c1d34d4ebeef2c72003da308b3947c7f749" + "sha256:a061aa0a9e06881eb8b3b2b43f05b9439d6583c206d0a6c340ff72a7b6669053", + "sha256:ffb9ef1de172603304d9d2819af6f5ece76f2e85ec10692a524dd876e72bf277" ], "index": "pypi", - "version": "==2018.4" + "version": "==2018.5" }, "pyzmail36": { "hashes": [ @@ -51,15 +51,23 @@ ], "index": "pypi", "version": "==1.0.3" + }, + "schedule": { + "hashes": [ + "sha256:1003a07c2dce12828c25a03a611a7371cedfa956e5f1b4abc32bcc94eb5a335b", + "sha256:a24e75fc5e5acbd204049d55329e39a2a9a3479bca2e34c7fde81386c9d8d2fa" + ], + "index": "pypi", + "version": "==0.5.0" } }, "develop": { "astroid": { "hashes": [ - "sha256:0ef2bf9f07c3150929b25e8e61b5198c27b0dca195e156f0e4d5bdd89185ca1a", - "sha256:fc9b582dba0366e63540982c3944a9230cbc6f303641c51483fa547dcc22393a" + "sha256:8704779744963d56a2625ec2949eb150bd499fc099510161ddbb2b64e2d98138", + "sha256:add3fd690e7c1fe92436d17be461feeaa173e6f33e0789734310334da0f30027" ], - "version": "==1.6.5" + "version": "==2.0" }, "colorama": { "hashes": [ @@ -120,11 +128,11 @@ }, "pylint": { "hashes": [ - "sha256:a48070545c12430cfc4e865bf62f5ad367784765681b3db442d8230f0960aa3c", - "sha256:fff220bcb996b4f7e2b0f6812fd81507b72ca4d8c4d05daf2655c333800cb9b3" + "sha256:248a7b19138b22e6390cba71adc0cb03ac6dd75a25d3544f03ea1728fa20e8f4", + "sha256:9cd70527ef3b099543eeabeb5c80ff325d86b477aa2b3d49e264e12d12153bc8" ], "index": "pypi", - "version": "==1.9.2" + "version": "==2.0.0" }, "six": { "hashes": [ @@ -133,6 +141,35 @@ ], "version": "==1.11.0" }, + "typed-ast": { + "hashes": [ + "sha256:0948004fa228ae071054f5208840a1e88747a357ec1101c17217bfe99b299d58", + "sha256:10703d3cec8dcd9eef5a630a04056bbc898abc19bac5691612acba7d1325b66d", + "sha256:1f6c4bd0bdc0f14246fd41262df7dfc018d65bb05f6e16390b7ea26ca454a291", + "sha256:25d8feefe27eb0303b73545416b13d108c6067b846b543738a25ff304824ed9a", + "sha256:29464a177d56e4e055b5f7b629935af7f49c196be47528cc94e0a7bf83fbc2b9", + "sha256:2e214b72168ea0275efd6c884b114ab42e316de3ffa125b267e732ed2abda892", + "sha256:3e0d5e48e3a23e9a4d1a9f698e32a542a4a288c871d33ed8df1b092a40f3a0f9", + "sha256:519425deca5c2b2bdac49f77b2c5625781abbaf9a809d727d3a5596b30bb4ded", + "sha256:57fe287f0cdd9ceaf69e7b71a2e94a24b5d268b35df251a88fef5cc241bf73aa", + "sha256:668d0cec391d9aed1c6a388b0d5b97cd22e6073eaa5fbaa6d2946603b4871efe", + "sha256:68ba70684990f59497680ff90d18e756a47bf4863c604098f10de9716b2c0bdd", + "sha256:6de012d2b166fe7a4cdf505eee3aaa12192f7ba365beeefaca4ec10e31241a85", + "sha256:79b91ebe5a28d349b6d0d323023350133e927b4de5b651a8aa2db69c761420c6", + "sha256:8550177fa5d4c1f09b5e5f524411c44633c80ec69b24e0e98906dd761941ca46", + "sha256:898f818399cafcdb93cbbe15fc83a33d05f18e29fb498ddc09b0214cdfc7cd51", + "sha256:94b091dc0f19291adcb279a108f5d38de2430411068b219f41b343c03b28fb1f", + "sha256:a26863198902cda15ab4503991e8cf1ca874219e0118cbf07c126bce7c4db129", + "sha256:a8034021801bc0440f2e027c354b4eafd95891b573e12ff0418dec385c76785c", + "sha256:bc978ac17468fe868ee589c795d06777f75496b1ed576d308002c8a5756fb9ea", + "sha256:c05b41bc1deade9f90ddc5d988fe506208019ebba9f2578c622516fd201f5863", + "sha256:c9b060bd1e5a26ab6e8267fd46fc9e02b54eb15fffb16d112d4c7b1c12987559", + "sha256:edb04bdd45bfd76c8292c4d9654568efaedf76fe78eb246dde69bdb13b2dad87", + "sha256:f19f2a4f547505fe9072e15f6f4ae714af51b5a681a97f187971f50c283193b6" + ], + "markers": "python_version < '3.7' and implementation_name == 'cpython'", + "version": "==1.1.0" + }, "wrapt": { "hashes": [ "sha256:d4d560d479f2c21e1b5443bbd15fe7ec4b37fe7e53d335d3b9b0a7b1226fe3c6" @@ -1,10 +1,10 @@ import logging import os - -from utils.client import EmailClient +import schedule from telegram import ParseMode from telegram.constants import MAX_MESSAGE_LENGTH from telegram.ext import (Updater, CommandHandler) +from utils.client import EmailClient logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', @@ -40,16 +40,25 @@ def _help(bot, update): text=help_str) def setting_email(bot, update, args): - global email_addr, email_passwd + global email_addr, email_passwd, inbox_num email_addr = args[0] email_passwd = args[1] update.message.reply_text("Configure email success!") + with EmailClient(email_addr, email_passwd) as client: + inbox_num = client.get_mails_count() + schedule.every(10).minutes.do(periodic_task, bot, update) + +def periodic_task(bot, update): + with EmailClient(email_addr, email_passwd) as client: + new_inbox_num = client.get_mails_count() + if new_inbox_num > inbox: + get_email(bot, update, new_inbox_num) def inbox(bot, update): with EmailClient(email_addr, email_passwd) as client: - num_of_mails = client.get_mails_count() - reply_text = "The index of newest mail is *%d*" % num_of_mails + inbox_num = client.get_mails_count() + reply_text = "The index of newest mail is *%d*" % inbox_num bot.send_message(update.message.chat_id, parse_mode=ParseMode.MARKDOWN, text=reply_text) @@ -88,6 +97,8 @@ def main(): # Start the Bot updater.start_polling() + schedule.run_pending() + # Run the bot until you press Ctrl-C or the process receives SIGINT, # SIGTERM or SIGABRT. This should be used most of the time, since # start_polling() is non-blocking and will stop the bot gracefully. |