Type hinting
This commit is contained in:
parent
ab6a0bc0ad
commit
3896776f0e
@ -11,7 +11,7 @@ __author__ = "Davide Testa"
|
|||||||
__email__ = "davide@davte.it"
|
__email__ = "davide@davte.it"
|
||||||
__credits__ = ["Marco Origlia", "Nick Lee @Nickoala"]
|
__credits__ = ["Marco Origlia", "Nick Lee @Nickoala"]
|
||||||
__license__ = "GNU General Public License v3.0"
|
__license__ = "GNU General Public License v3.0"
|
||||||
__version__ = "2.5.6"
|
__version__ = "2.5.7"
|
||||||
__maintainer__ = "Davide Testa"
|
__maintainer__ = "Davide Testa"
|
||||||
__contact__ = "t.me/davte"
|
__contact__ = "t.me/davte"
|
||||||
|
|
||||||
|
@ -13,14 +13,16 @@ import asyncio
|
|||||||
import datetime
|
import datetime
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
import types
|
||||||
|
|
||||||
from typing import Union
|
from typing import Union, List
|
||||||
|
|
||||||
# Third party modules
|
# Third party modules
|
||||||
from sqlalchemy.exc import ResourceClosedError
|
from sqlalchemy.exc import ResourceClosedError
|
||||||
|
|
||||||
# Project modules
|
# Project modules
|
||||||
from . import bot as davtelepot_bot, messages
|
from . import messages
|
||||||
|
from .bot import Bot
|
||||||
from .utilities import (
|
from .utilities import (
|
||||||
async_wrapper, CachedPage, Confirmator, extract, get_cleaned_text,
|
async_wrapper, CachedPage, Confirmator, extract, get_cleaned_text,
|
||||||
get_user, escape_html_chars, line_drawing_unordered_list, make_button,
|
get_user, escape_html_chars, line_drawing_unordered_list, make_button,
|
||||||
@ -29,7 +31,11 @@ from .utilities import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
async def _forward_to(update, bot, sender, addressee, is_admin=False):
|
async def _forward_to(update,
|
||||||
|
bot: Bot,
|
||||||
|
sender,
|
||||||
|
addressee,
|
||||||
|
is_admin=False):
|
||||||
if update['text'].lower() in ['stop'] and is_admin:
|
if update['text'].lower() in ['stop'] and is_admin:
|
||||||
with bot.db as db:
|
with bot.db as db:
|
||||||
admin_record = db['users'].find_one(
|
admin_record = db['users'].find_one(
|
||||||
@ -64,7 +70,10 @@ async def _forward_to(update, bot, sender, addressee, is_admin=False):
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
def get_talk_panel(bot, update, user_record=None, text=''):
|
def get_talk_panel(bot: Bot,
|
||||||
|
update,
|
||||||
|
user_record=None,
|
||||||
|
text: str = ''):
|
||||||
"""Return text and reply markup of talk panel.
|
"""Return text and reply markup of talk panel.
|
||||||
|
|
||||||
`text` may be:
|
`text` may be:
|
||||||
@ -202,7 +211,9 @@ def get_talk_panel(bot, update, user_record=None, text=''):
|
|||||||
return text, reply_markup
|
return text, reply_markup
|
||||||
|
|
||||||
|
|
||||||
async def _talk_command(bot, update, user_record):
|
async def _talk_command(bot: Bot,
|
||||||
|
update,
|
||||||
|
user_record):
|
||||||
text = get_cleaned_text(
|
text = get_cleaned_text(
|
||||||
update,
|
update,
|
||||||
bot,
|
bot,
|
||||||
@ -217,7 +228,9 @@ async def _talk_command(bot, update, user_record):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
async def start_session(bot, other_user_record, admin_record):
|
async def start_session(bot: Bot,
|
||||||
|
other_user_record,
|
||||||
|
admin_record):
|
||||||
"""Start talking session between user and admin.
|
"""Start talking session between user and admin.
|
||||||
|
|
||||||
Register session in database, so it gets loaded before message_loop starts.
|
Register session in database, so it gets loaded before message_loop starts.
|
||||||
@ -280,7 +293,9 @@ async def start_session(bot, other_user_record, admin_record):
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
async def end_session(bot, other_user_record, admin_record):
|
async def end_session(bot: Bot,
|
||||||
|
other_user_record,
|
||||||
|
admin_record):
|
||||||
"""End talking session between user and admin.
|
"""End talking session between user and admin.
|
||||||
|
|
||||||
Cancel session in database, so it will not be loaded anymore.
|
Cancel session in database, so it will not be loaded anymore.
|
||||||
@ -316,7 +331,10 @@ async def end_session(bot, other_user_record, admin_record):
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
async def _talk_button(bot, update, user_record, data):
|
async def _talk_button(bot: Bot,
|
||||||
|
update,
|
||||||
|
user_record,
|
||||||
|
data):
|
||||||
telegram_id = user_record['telegram_id']
|
telegram_id = user_record['telegram_id']
|
||||||
command, *arguments = data
|
command, *arguments = data
|
||||||
result, text, reply_markup = '', '', None
|
result, text, reply_markup = '', '', None
|
||||||
@ -390,7 +408,9 @@ async def _talk_button(bot, update, user_record, data):
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
async def _restart_command(bot, update, user_record):
|
async def _restart_command(bot: Bot,
|
||||||
|
update,
|
||||||
|
user_record):
|
||||||
with bot.db as db:
|
with bot.db as db:
|
||||||
db['restart_messages'].insert(
|
db['restart_messages'].insert(
|
||||||
dict(
|
dict(
|
||||||
@ -415,7 +435,9 @@ async def _restart_command(bot, update, user_record):
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
async def _stop_command(bot, update, user_record):
|
async def _stop_command(bot: Bot,
|
||||||
|
update,
|
||||||
|
user_record):
|
||||||
text = bot.get_message(
|
text = bot.get_message(
|
||||||
'admin', 'stop_command', 'text',
|
'admin', 'stop_command', 'text',
|
||||||
update=update, user_record=user_record
|
update=update, user_record=user_record
|
||||||
@ -448,14 +470,17 @@ async def _stop_command(bot, update, user_record):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
async def stop_bots(bot):
|
async def stop_bots(bot: Bot):
|
||||||
"""Stop bots in `bot` class."""
|
"""Stop bots in `bot` class."""
|
||||||
await asyncio.sleep(2)
|
await asyncio.sleep(2)
|
||||||
bot.__class__.stop(message='=== STOP ===', final_state=0)
|
bot.__class__.stop(message='=== STOP ===', final_state=0)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
async def _stop_button(bot, update, user_record, data):
|
async def _stop_button(bot: Bot,
|
||||||
|
update,
|
||||||
|
user_record,
|
||||||
|
data: List[Union[int, str]]):
|
||||||
result, text, reply_markup = '', '', None
|
result, text, reply_markup = '', '', None
|
||||||
telegram_id = user_record['telegram_id']
|
telegram_id = user_record['telegram_id']
|
||||||
command = data[0] if len(data) > 0 else 'None'
|
command = data[0] if len(data) > 0 else 'None'
|
||||||
@ -798,7 +823,7 @@ async def get_last_commit():
|
|||||||
return last_commit
|
return last_commit
|
||||||
|
|
||||||
|
|
||||||
async def _version_command(bot: davtelepot_bot, update, user_record):
|
async def _version_command(bot: Bot, update, user_record):
|
||||||
last_commit = await get_last_commit()
|
last_commit = await get_last_commit()
|
||||||
text = bot.get_message(
|
text = bot.get_message(
|
||||||
'admin', 'version_command', 'header',
|
'admin', 'version_command', 'header',
|
||||||
@ -813,7 +838,7 @@ async def _version_command(bot: davtelepot_bot, update, user_record):
|
|||||||
return text
|
return text
|
||||||
|
|
||||||
|
|
||||||
async def notify_new_version(bot: davtelepot_bot):
|
async def notify_new_version(bot: Bot):
|
||||||
"""Notify `bot` administrators about new versions.
|
"""Notify `bot` administrators about new versions.
|
||||||
|
|
||||||
Notify admins when last commit and/or davtelepot version change.
|
Notify admins when last commit and/or davtelepot version change.
|
||||||
@ -872,7 +897,7 @@ async def notify_new_version(bot: davtelepot_bot):
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
async def get_package_updates(bot: davtelepot_bot,
|
async def get_package_updates(bot: Bot,
|
||||||
monitoring_interval: Union[
|
monitoring_interval: Union[
|
||||||
int, datetime.timedelta
|
int, datetime.timedelta
|
||||||
] = 60 * 60,
|
] = 60 * 60,
|
||||||
@ -945,10 +970,10 @@ async def get_package_updates(bot: davtelepot_bot,
|
|||||||
await asyncio.sleep(monitoring_interval)
|
await asyncio.sleep(monitoring_interval)
|
||||||
|
|
||||||
|
|
||||||
def init(telegram_bot,
|
def init(telegram_bot: Bot,
|
||||||
talk_messages=None,
|
talk_messages: dict = None,
|
||||||
admin_messages=None,
|
admin_messages: dict = None,
|
||||||
packages=None):
|
packages: List[types.ModuleType] = None):
|
||||||
"""Assign parsers, commands, buttons and queries to given `bot`."""
|
"""Assign parsers, commands, buttons and queries to given `bot`."""
|
||||||
if packages is None:
|
if packages is None:
|
||||||
packages = []
|
packages = []
|
||||||
|
Loading…
x
Reference in New Issue
Block a user