Skip to content

Commit 5591831

Browse files
authored
Update bot.py
1 parent 63e303a commit 5591831

File tree

1 file changed

+32
-9
lines changed

1 file changed

+32
-9
lines changed

bot.py

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
"""Simple Telegram Bot which parse .xlsx file by user message pattern"""
2+
13
import os
24
from telegram import Update
35
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes
@@ -7,38 +9,59 @@
79
XLSX_FILE_PATH = os.getenv("XLSX_FILE_PATH")
810

911
async def find(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
12+
"""Function which parse excel file by user message and send response to Telegram Bot"""
1013
if update.message and update.message.text:
1114
workbook = load_workbook(XLSX_FILE_PATH)
1215
sheet = workbook.active
1316
headers = get_headers(sheet)
1417
keywords_column = headers.get('Keywords')
1518
links_column = headers.get('Link')
19+
tencode_column = headers.get('Ten-code')
20+
name_column = headers.get('Name')
21+
parsed_message = update.message.text.replace("/find", "").strip()
1622
response_message = ''
1723

18-
if keywords_column and links_column:
19-
for row in sheet.iter_rows():
20-
parsed_message = update.message.text.replace("/find", "").strip()
21-
keywords = str(row[keywords_column - 1].value).replace(" ", "").split(";")
22-
keyword_match = any(element in parsed_message for element in keywords)
23-
if keyword_match:
24-
response_message += row[links_column - 1].value
25-
24+
if any(char.isdigit() for char in parsed_message):
25+
if tencode_column:
26+
for row in sheet.iter_rows():
27+
tencode = str(row[tencode_column - 1].value)
28+
if parsed_message == tencode:
29+
response_message += f"{row[name_column - 1].value} : {row[links_column - 1].value}"
30+
else:
31+
if keywords_column and links_column:
32+
for row in sheet.iter_rows():
33+
keywords = str(row[keywords_column - 1].value).split(";")
34+
trimmed_keywords = [s.lstrip() for s in keywords]
35+
lower_keywords = [s.lower() for s in trimmed_keywords]
36+
if parsed_message.lower() in lower_keywords:
37+
response_message += f"{row[name_column - 1].value} : {row[links_column - 1].value}"
38+
39+
if response_message == '':
40+
response_message += "Not Found"
41+
2642
await update.message.reply_text(f"{response_message}")
2743

2844
def get_headers(sheet: any ) -> dict:
45+
"""Function which return excel column ids and cells as dictionary"""
2946
headers = {}
3047
for col_idx, cell in enumerate(sheet[1], start=1):
3148
headers[cell.value] = col_idx
32-
49+
3350
return headers
3451

3552
def main():
53+
"""Main function"""
3654
try:
3755
app = ApplicationBuilder().token(TELEGRAM_BOT_TOKEN).build()
3856
app.add_handler(CommandHandler("find", find))
57+
app.add_handler(CommandHandler("f", find))
3958
app.run_polling()
4059
except Exception as err:
4160
print(f"Unexpected {err=}, {type(err)=}")
4261

4362
if __name__ == "__main__":
4463
main()
64+
65+
66+
if __name__ == "__main__":
67+
main()

0 commit comments

Comments
 (0)