Python Forum

Full Version: how to merge 2 handlers pyTelegramBotApi
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Please write how to run these 2 functions depending on message.text. For example, if message.text== from 1 to 10 and the letter ā€œvā€ then let the 1-function be executed, and if message.text contains a query that is in the product names in the database, then send the name of these products to the user. Thank you.

@bot.message_handler()
def send_docs(message):
    if message.text in ['1','2','3','4','5','6','7','8','9','10','v']:
        file_source=open(f"D:\Project\domstroy_{message.text}.csv")
        bot.send_document(message.chat.id, file_source) 

@bot.message_handler()
def send_query(message):
    db=sqlite3.connect("ostatki.db",check_same_thread=False)
    cur=db.cursor()
    cur.execute("DROP table IF EXISTS tovarniye_ostatki")
    cur.execute("CREATE virtual table IF NOT EXISTS tovarniye_ostatki USING FTS5 (nazvaniye_tovara,ostatok_tovara)")
    with open ("domstroy.csv",'r', encoding="utf8",) as file:
        for row in file:   
            cur.execute("INSERT OR IGNORE INTO tovarniye_ostatki VALUES (?,?)",row.split(";"),)
    db.commit()(nazvaniye_tovara MATCH (?)",(message.text,))
    result = result_query.fetchall()
    for i in result:
       bot.send_message(message.chat.id, (f"{i[1]} == {i[0]}"))
    db.close()
I'm not familar with the Telegram-API.
In general, a handler could call other functions.
Make the decision in the handler function and the handler function calls one of the other functions.

@bot.message_handler()
def message_handler(message):
    if message.text in ['1','2','3','4','5','6','7','8','9','10','v']:
        send_docs(message)
    else:
        send_query(message)

def send_docs(message):
    file_source=open(f"D:\Project\domstroy_{message.text}.csv")
    bot.send_document(message.chat.id, file_source) 

def send_query(message):
    db=sqlite3.connect("ostatki.db",check_same_thread=False)
    cur=db.cursor()
    cur.execute("DROP table IF EXISTS tovarniye_ostatki")
    cur.execute("CREATE virtual table IF NOT EXISTS tovarniye_ostatki USING FTS5 (nazvaniye_tovara,ostatok_tovara)")
    with open ("domstroy.csv",'r', encoding="utf8",) as file:
        for row in file:   
            cur.execute("INSERT OR IGNORE INTO tovarniye_ostatki VALUES (?,?)",row.split(";"),)
    db.commit()(nazvaniye_tovara MATCH (?)",(message.text,))
    result = result_query.fetchall()
    for i in result:
       bot.send_message(message.chat.id, (f"{i[1]} == {i[0]}"))
    db.close()
thank you very much