aboutsummaryrefslogtreecommitdiff
path: root/bot.py
diff options
context:
space:
mode:
Diffstat (limited to 'bot.py')
-rw-r--r--bot.py60
1 files changed, 28 insertions, 32 deletions
diff --git a/bot.py b/bot.py
index deb8ebe..66a403c 100644
--- a/bot.py
+++ b/bot.py
@@ -1,9 +1,9 @@
import logging
import os
import sys
-from telegram import ParseMode, Update
-from telegram.constants import MAX_MESSAGE_LENGTH
-from telegram.ext import Updater, CommandHandler, CallbackContext
+from telegram import Update, Bot
+from telegram.constants import MessageLimit, ParseMode
+from telegram.ext import ApplicationBuilder, CommandHandler, CallbackContext
from utils.client import EmailClient
@@ -25,11 +25,11 @@ def is_owner(update: Update) -> bool:
def handle_large_text(text):
while text:
- if len(text) < MAX_MESSAGE_LENGTH:
+ if len(text) < MessageLimit.MAX_TEXT_LENGTH:
yield text
text = None
else:
- out = text[:MAX_MESSAGE_LENGTH]
+ out = text[: MessageLimit.MAX_TEXT_LENGTH]
yield out
text = text.lstrip(out)
@@ -39,15 +39,15 @@ def error(update: Update, context: CallbackContext) -> None:
logger.warning('Update "%s" caused error "%s"', update, context.error)
-def start_callback(update: Update, context: CallbackContext) -> None:
+async def start_callback(update: Update, context: CallbackContext) -> None:
if not is_owner(update):
return
msg = "Use /help to get help"
# print(update)
- update.message.reply_text(msg)
+ await update.message.reply_text(msg)
-def _help(update: Update, context: CallbackContext) -> None:
+async def _help(update: Update, context: CallbackContext) -> None:
if not is_owner(update):
return
"""Send a message when the command /help is issued."""
@@ -60,31 +60,31 @@ def _help(update: Update, context: CallbackContext) -> None:
# "/setting [email protected] password\n" \
# "/inbox\n" \
# "/get mail_index"
- context.bot.send_message(
+ await context.bot.send_message(
update.message.chat_id,
# parse_mode=ParseMode.MARKDOWN,
text=help_str,
)
-def setting_email(update: Update, context: CallbackContext) -> None:
+async def setting_email(update: Update, context: CallbackContext) -> None:
if not is_owner(update):
return
global email_addr, email_passwd, inbox_num
email_addr = context.args[0]
email_passwd = context.args[1]
logger.info("received setting_email command.")
- update.message.reply_text("Configure email success!")
+ await update.message.reply_text("Configure email success!")
with EmailClient(email_addr, email_passwd) as client:
inbox_num = client.get_mails_count()
context.job_queue.run_repeating(
- periodic_task, interval=60, context=update.message.chat_id
+ periodic_task, interval=60, chat_id=update.message.chat_id
)
# chat_data['job'] = job
logger.info("periodic task scheduled.")
-def periodic_task(context: CallbackContext) -> None:
+async def periodic_task(context: CallbackContext) -> None:
global inbox_num
logger.info("entering periodic task.")
with EmailClient(email_addr, email_passwd) as client:
@@ -94,11 +94,11 @@ def periodic_task(context: CallbackContext) -> None:
mail = client.get_mail_by_index(i + 1)
content = mail.__repr__()
for text in handle_large_text(content):
- context.bot.send_message(context.job.context, text=text)
+ await context.bot.send_message(context.job.context, text=text)
inbox_num = new_inbox_num
-def inbox(update: Update, context: CallbackContext) -> None:
+async def inbox(update: Update, context: CallbackContext) -> None:
if not is_owner(update):
return
logger.info("received inbox command.")
@@ -111,17 +111,17 @@ def inbox(update: Update, context: CallbackContext) -> None:
" time you checked." % (new_num, new_num - inbox_num)
)
inbox_num = new_num
- context.bot.send_message(
+ await context.bot.send_message(
update.message.chat_id, parse_mode=ParseMode.MARKDOWN, text=reply_text
)
-def get_email(update: Update, context: CallbackContext) -> None:
+async def get_email(update: Update, context: CallbackContext) -> None:
if not is_owner(update):
return
index = context.args[0]
if not index:
- context.bot.send_message(
+ await context.bot.send_message(
update.message.chat_id, text="$index should be a positive number!"
)
logger.info("received get command.")
@@ -129,38 +129,34 @@ def get_email(update: Update, context: CallbackContext) -> None:
mail = client.get_mail_by_index(index)
content = mail.__repr__()
for text in handle_large_text(content):
- context.bot.send_message(update.message.chat_id, text=text)
+ await context.bot.send_message(update.message.chat_id, text=text)
def main():
# Create the EventHandler and pass it your bot's token.
- updater = Updater(token=bot_token, use_context=True)
+ bot = Bot(token=bot_token)
print(bot_token)
- # Get the dispatcher to register handlers
- dp = updater.dispatcher
+ application = ApplicationBuilder().bot(bot).build()
# simple start function
- dp.add_handler(CommandHandler("start", start_callback))
+ application.add_handler(CommandHandler("start", start_callback))
- dp.add_handler(CommandHandler("help", _help))
+ application.add_handler(CommandHandler("help", _help))
#
# Add command handler to set email address and account.
- dp.add_handler(CommandHandler("setting", setting_email))
+ application.add_handler(CommandHandler("setting", setting_email))
- dp.add_handler(CommandHandler("inbox", inbox))
+ application.add_handler(CommandHandler("inbox", inbox))
- dp.add_handler(CommandHandler("get", get_email))
+ application.add_handler(CommandHandler("get", get_email))
- dp.add_error_handler(error)
-
- # Start the Bot
- updater.start_polling()
+ application.add_error_handler(error)
# 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.
- updater.idle()
+ application.run_polling()
if __name__ == "__main__":