Avoid crash on certain terminals (workaround for #70)

This commit is contained in:
Lonami Exo 2017-05-07 13:33:35 +02:00
parent 49a76f23f5
commit db79ff08c7

View File

@ -13,7 +13,11 @@ def print_title(title):
# Clear previous window # Clear previous window
print('\n') print('\n')
print('=={}=='.format('=' * len(title))) print('=={}=='.format('=' * len(title)))
print('= {} ='.format(title)) try:
print('= {} ='.format(title))
except UnicodeEncodeError:
# Issue #70, some consoles lack support for certain characters
print('= {} ='.format('?' * len(title)))
print('=={}=='.format('=' * len(title))) print('=={}=='.format('=' * len(title)))
@ -77,33 +81,36 @@ class InteractiveTelegramClient(TelegramClient):
i = None i = None
while i is None: while i is None:
try: print_title('Dialogs window')
print_title('Dialogs window')
# Display them so the user can choose # Display them so the user can choose
for i, entity in enumerate(entities): for i, entity in enumerate(entities):
i += 1 # 1-based index for normies i += 1 # 1-based index for normies
try:
print('{}. {}'.format(i, get_display_name(entity))) print('{}. {}'.format(i, get_display_name(entity)))
except UnicodeEncodeError:
# Issue #70, some consoles lack support for certain characters
print('{}. {}'.format(i, '(could not render name)'))
# Let the user decide who they want to talk to # Let the user decide who they want to talk to
print() print()
print('> Who do you want to send messages to?') print('> Who do you want to send messages to?')
print('> Available commands:') print('> Available commands:')
print(' !q: Quits the dialogs window and exits.') print(' !q: Quits the dialogs window and exits.')
print(' !l: Logs out, terminating this session.') print(' !l: Logs out, terminating this session.')
print() print()
i = input('Enter dialog ID or a command: ') i = input('Enter dialog ID or a command: ')
if i == '!q': if i == '!q':
return return
if i == '!l': if i == '!l':
self.log_out() self.log_out()
return return
try:
i = int(i if i else 0) - 1 i = int(i if i else 0) - 1
# Ensure it is inside the bounds, otherwise set to None and retry # Ensure it is inside the bounds, otherwise set to None and retry
if not 0 <= i < dialog_count: if not 0 <= i < dialog_count:
i = None i = None
except ValueError: except ValueError:
i = None i = None
@ -190,8 +197,7 @@ class InteractiveTelegramClient(TelegramClient):
print('Profile picture downloaded to {}'.format( print('Profile picture downloaded to {}'.format(
output)) output))
else: else:
print('"{}" does not seem to have a profile picture.' print('No profile picture found for this user.')
.format(get_display_name(entity)))
# Send chat message (if any) # Send chat message (if any)
elif msg: elif msg:
@ -254,19 +260,24 @@ class InteractiveTelegramClient(TelegramClient):
@staticmethod @staticmethod
def update_handler(update_object): def update_handler(update_object):
if type(update_object) is UpdateShortMessage: try:
if update_object.out: if type(update_object) is UpdateShortMessage:
print('You sent {} to user #{}'.format(update_object.message, if update_object.out:
update_object.user_id)) print('You sent {} to user #{}'.format(update_object.message,
else: update_object.user_id))
print('[User #{} sent {}]'.format(update_object.user_id, else:
update_object.message)) print('[User #{} sent {}]'.format(update_object.user_id,
update_object.message))
elif type(update_object) is UpdateShortChatMessage: elif type(update_object) is UpdateShortChatMessage:
if update_object.out: if update_object.out:
print('You sent {} to chat #{}'.format(update_object.message, print('You sent {} to chat #{}'.format(update_object.message,
update_object.chat_id)) update_object.chat_id))
else: else:
print('[Chat #{}, user #{} sent {}]'.format( print('[Chat #{}, user #{} sent {}]'.format(
update_object.chat_id, update_object.from_id, update_object.chat_id, update_object.from_id,
update_object.message)) update_object.message))
except UnicodeEncodeError:
# Issue #70, some consoles lack support for certain characters
print('(Could not print update since it contains '
'characters your terminal does not support)')