Skip to content

Commit

Permalink
Telegram bot try-except
Browse files Browse the repository at this point in the history
  • Loading branch information
npanuhin committed Dec 9, 2024
1 parent 4eb2c1f commit 00d4f0d
Showing 1 changed file with 65 additions and 50 deletions.
115 changes: 65 additions & 50 deletions scripts/bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,91 +54,106 @@ def run_command(dataset: str, command: str) -> str:

@bot.message_handler(commands=['start'])
def start_message(message):
print(f'Incoming message: {message.text}')
try:
print(f'Incoming message: {message.text}')

bot.send_message(
message.chat.id,
'Please select a dataset using /select command (e.g., `/select gtfs_hamburg`)',
parse_mode='Markdown'
)
bot.send_message(
message.chat.id,
'Please select a dataset using /select command (e.g., `/select gtfs_hamburg`)',
parse_mode='Markdown'
)
except Exception:
pass


@bot.message_handler(commands=['select'])
def select_dataset(message):
print(f'Incoming message: {message.text}')
try:
print(f'Incoming message: {message.text}')

user_input = message.text.strip().removeprefix('/select').strip()

user_input = message.text.strip().removeprefix('/select').strip()
if not user_input:
return start_message(message)

if not user_input:
return start_message(message)
if not os.path.isdir(mkpath_root(f'data/{user_input}')):
bot.send_message(
message.chat.id,
'Dataset was not found. Please try again',
)
return start_message(message)

if not os.path.isdir(mkpath_root(f'data/{user_input}')):
SELECTED_DATASET[message.chat.id] = user_input
bot.send_message(
message.chat.id,
f'Dataset \"{user_input}\" selected! You can now use /route or /search like this:'
)
bot.send_message(
message.chat.id,
'Dataset was not found. Please try again',
f'```\n'
f'/route --start \"Bremen Hbf\" --end \"Hamburg Airport (Flughafen)\" --date 2020-03-20 --time 06:00\n'
f'/search Bremen\n'
f'```',
parse_mode='Markdown'
)
return start_message(message)

SELECTED_DATASET[message.chat.id] = user_input
bot.send_message(
message.chat.id,
f'Dataset \"{user_input}\" selected! You can now use /route or /search like this:'
)
bot.send_message(
message.chat.id,
f'```\n'
f'/route --start \"Bremen Hbf\" --end \"Hamburg Airport (Flughafen)\" --date 2020-03-20 --time 06:00\n'
f'/search Bremen\n'
f'```',
parse_mode='Markdown'
)
except Exception:
pass


@bot.message_handler(commands=['route'])
def route_command(message):
print(f'Incoming message: {message.text}')
try:
print(f'Incoming message: {message.text}')

if message.chat.id not in SELECTED_DATASET:
return start_message(message)
if message.chat.id not in SELECTED_DATASET:
return start_message(message)

user_input = message.text.strip().removeprefix('/')
user_input = message.text.strip().removeprefix('/')

user_input = parse_message(user_input)
user_input = parse_message(user_input)

result = run_command(SELECTED_DATASET[message.chat.id], user_input)
result = run_command(SELECTED_DATASET[message.chat.id], user_input)

bot.send_message(message.chat.id, result)
bot.send_message(message.chat.id, result)
except Exception:
pass


@bot.message_handler(commands=['search'])
def search_command(message):
print(f'Incoming message: {message.text}')
try:
print(f'Incoming message: {message.text}')

if message.chat.id not in SELECTED_DATASET:
return start_message(message)
if message.chat.id not in SELECTED_DATASET:
return start_message(message)

user_input = message.text.strip().removeprefix('/')
user_input = message.text.strip().removeprefix('/')

result = run_command(SELECTED_DATASET[message.chat.id], user_input)
result = run_command(SELECTED_DATASET[message.chat.id], user_input)

if result[result.find('|'):].strip():
result = result[:result.find('|')] + '```\n' + result[result.find('|'):] + '\n```'
else:
result = f'No stations found'
if result[result.find('|'):].strip():
result = result[:result.find('|')] + '```\n' + result[result.find('|'):] + '\n```'
else:
result = f'No stations found'

print(f'Sending response:\n{result}')
print(f'Sending response:\n{result}')

bot.send_message(message.chat.id, result, parse_mode='Markdown')
bot.send_message(message.chat.id, result, parse_mode='Markdown')
except Exception:
pass


@bot.message_handler(func=lambda message: True)
def handle_input(message):
print(f'Incoming message: {message.text}')
try:
print(f'Incoming message: {message.text}')

bot.send_message(
message.chat.id,
'Please use commands: /select, /route, /search'
)
bot.send_message(
message.chat.id,
'Please use commands: /select, /route, /search'
)
except Exception:
pass


print('Starting Telegram Bot...')
Expand Down

0 comments on commit 00d4f0d

Please sign in to comment.