menikev commited on
Commit
4520d48
·
verified ·
1 Parent(s): 84fb4ed

Create telegram_bot.py

Browse files
Files changed (1) hide show
  1. src/telegram_bot.py +45 -0
src/telegram_bot.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # src/telegram_bot.py
2
+ import os
3
+ import telebot
4
+ from langchain.chains import RetrievalQA
5
+ from langchain_community.llms import HuggingFaceEndpoint
6
+ from retriever import get_retriever
7
+
8
+ BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN")
9
+ HF_TOKEN = os.getenv("HUGGINGFACEHUB_API_TOKEN")
10
+
11
+ bot = telebot.TeleBot(BOT_TOKEN)
12
+
13
+ retriever = get_retriever()
14
+ llm = HuggingFaceEndpoint(repo_id="tiiuae/falcon-7b-instruct", huggingfacehub_api_token=HF_TOKEN)
15
+ qa_chain = RetrievalQA.from_chain_type(llm=llm, retriever=retriever)
16
+
17
+ user_lang_pref = {}
18
+
19
+ @bot.message_handler(commands=['start'])
20
+ def send_welcome(message):
21
+ bot.reply_to(message, "Welcome to KnowYourRight Bot! Reply with '1' for English or '2' for Pidgin.")
22
+ user_lang_pref[message.chat.id] = None
23
+
24
+ @bot.message_handler(func=lambda m: user_lang_pref.get(m.chat.id) is None)
25
+ def set_language(message):
26
+ if message.text.strip() == "1":
27
+ user_lang_pref[message.chat.id] = "english"
28
+ bot.reply_to(message, "Okay! Ask me your question in English.")
29
+ elif message.text.strip() == "2":
30
+ user_lang_pref[message.chat.id] = "pidgin"
31
+ bot.reply_to(message, "Okay! Ask me your question in Pidgin.")
32
+ else:
33
+ bot.reply_to(message, "Please type 1 for English or 2 for Pidgin.")
34
+
35
+ @bot.message_handler(func=lambda m: user_lang_pref.get(m.chat.id) is not None)
36
+ def handle_query(message):
37
+ lang_choice = user_lang_pref[message.chat.id]
38
+ query = message.text
39
+ if lang_choice == "pidgin":
40
+ query = f"Answer in Nigerian Pidgin: {query}"
41
+ result = qa_chain.run(query)
42
+ bot.reply_to(message, result)
43
+
44
+ if __name__ == "__main__":
45
+ bot.polling()