diff --git a/davtelepot/administration_tools.py b/davtelepot/administration_tools.py index dfea39b..bf1148e 100644 --- a/davtelepot/administration_tools.py +++ b/davtelepot/administration_tools.py @@ -159,7 +159,7 @@ async def _forward_to(update, bot, sender, addressee, is_admin=False): return -def get_talk_panel(update, bot, text=''): +def get_talk_panel(bot, update, user_record=None, text=''): """Return text and reply markup of talk panel. `text` may be: @@ -177,32 +177,29 @@ def get_talk_panel(update, bot, text=''): else: users = list( db.query( - """SELECT * - FROM users - WHERE COALESCE( - first_name || last_name || username, - last_name || username, - first_name || username, - username, - first_name || last_name, - last_name, - first_name - ) LIKE '%{username}%' - ORDER BY LOWER( - COALESCE( - first_name || last_name || username, - last_name || username, - first_name || username, - username, - first_name || last_name, - last_name, - first_name - ) - ) - LIMIT 26 - """.format( - username=text - ) + "SELECT * " + "FROM users " + "WHERE COALESCE( " + " first_name || last_name || username, " + " last_name || username, " + " first_name || username, " + " username, " + " first_name || last_name, " + " last_name, " + " first_name " + f") LIKE '%{text}%' " + "ORDER BY LOWER( " + " COALESCE( " + " first_name || last_name || username, " + " last_name || username, " + " first_name || username, " + " username, " + " first_name || last_name, " + " last_name, " + " first_name " + " ) " + ") " + "LIMIT 26" ) ) if len(text) == 0: @@ -211,6 +208,7 @@ def get_talk_panel(update, bot, text=''): 'talk', 'help_text', update=update, + user_record=user_record, q=escape_html_chars( remove_html_tags(text) ) @@ -221,7 +219,7 @@ def get_talk_panel(update, bot, text=''): make_button( bot.get_message( 'talk', 'search_button', - update=update + update=update, user_record=user_record ), prefix='talk:///', data=['search'] @@ -235,6 +233,7 @@ def get_talk_panel(update, bot, text=''): 'talk', 'user_not_found', update=update, + user_record=user_record, q=escape_html_chars( remove_html_tags(text) ) @@ -245,7 +244,7 @@ def get_talk_panel(update, bot, text=''): make_button( bot.get_message( 'talk', 'search_button', - update=update + update=update, user_record=user_record ), prefix='talk:///', data=['search'] @@ -257,7 +256,7 @@ def get_talk_panel(update, bot, text=''): text = "{header}\n\n{u}{etc}".format( header=bot.get_message( 'talk', 'select_user', - update=update + update=update, user_record=user_record ), u=line_drawing_unordered_list( [ @@ -300,13 +299,14 @@ def get_talk_panel(update, bot, text=''): return text, reply_markup -async def _talk_command(update, bot): +async def _talk_command(bot, update, user_record): text = get_cleaned_text( update, bot, ['talk'] ) - text, reply_markup = get_talk_panel(update, bot, text) + text, reply_markup = get_talk_panel(bot=bot, update=update, + user_record=user_record, text=text) return dict( text=text, parse_mode='HTML', @@ -426,7 +426,7 @@ async def _talk_button(bot, update, user_record, data): ) text = bot.get_message( 'talk', 'instructions', - update=update + update=update, user_record=user_record ) reply_markup = None elif command == 'select': @@ -457,7 +457,7 @@ async def _talk_button(bot, update, user_record, data): elif not Confirmator.get('stop_bots').confirm(telegram_id): result = bot.get_message( 'talk', 'end_session', - update=update, + update=update, user_record=user_record ) else: with bot.db as db: @@ -753,8 +753,8 @@ def init(bot, talk_messages=None, admin_messages=None): @bot.command(command='/talk', aliases=[], show_in_keyboard=False, description=admin_messages['talk_command']['description'], authorization_level='admin') - async def talk_command(update): - return await _talk_command(update, bot) + async def talk_command(bot, update, user_record): + return await _talk_command(bot, update, user_record) @bot.button(prefix='talk:///', separator='|', authorization_level='admin') async def talk_button(bot, update, user_record, data):