Compare commits
3 Commits
8f20396bbe
...
81c905ab4b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
81c905ab4b | ||
|
|
f130e45dcf | ||
|
|
f67a9194a3 |
48
core/core.py
48
core/core.py
|
|
@ -34,36 +34,6 @@ if not os.path.exists(DATA_DIR):
|
||||||
PERSIAN_BOUNDARIES = set(" \n،.؟!؛:")
|
PERSIAN_BOUNDARIES = set(" \n،.؟!؛:")
|
||||||
|
|
||||||
|
|
||||||
# f"https://YOUR_DOMAIN.com
|
|
||||||
|
|
||||||
from pydantic import BaseModel
|
|
||||||
|
|
||||||
class DbRule(BaseModel):
|
|
||||||
rule_id: str
|
|
||||||
rule_content: str
|
|
||||||
rule_type: str
|
|
||||||
section_id: str
|
|
||||||
section_content: str
|
|
||||||
section_full_path :str
|
|
||||||
qanon_id: str
|
|
||||||
qanon_etebar: str
|
|
||||||
qanon_title: str
|
|
||||||
state_etebar: str
|
|
||||||
|
|
||||||
class InputRule(BaseModel):
|
|
||||||
rule_id: str
|
|
||||||
rule_content: str
|
|
||||||
rule_type: str
|
|
||||||
section_id: str
|
|
||||||
section_content: str
|
|
||||||
|
|
||||||
class SemanticSearchP2P(BaseModel):
|
|
||||||
in_rule: InputRule
|
|
||||||
db_rule: DbRule
|
|
||||||
score: float = 0
|
|
||||||
metadata: Dict
|
|
||||||
|
|
||||||
|
|
||||||
class Formatter:
|
class Formatter:
|
||||||
"""
|
"""
|
||||||
Formatting options
|
Formatting options
|
||||||
|
|
@ -598,17 +568,13 @@ class Formatter:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
|
||||||
deleteMessage
|
|
||||||
message_id
|
|
||||||
chat_id
|
|
||||||
"""
|
|
||||||
|
|
||||||
class RequestManager:
|
class RequestManager:
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
host_url:str,
|
host_url:str,
|
||||||
url_time_out=120,
|
url_time_out=1200,
|
||||||
step_time_out=60,
|
step_time_out=600,
|
||||||
):
|
):
|
||||||
self.host_url = host_url
|
self.host_url = host_url
|
||||||
self.url_time_out = url_time_out
|
self.url_time_out = url_time_out
|
||||||
|
|
@ -914,6 +880,11 @@ def cer_ntlk(exist: str, new: str) -> float:
|
||||||
# edit distance روی کلمات
|
# edit distance روی کلمات
|
||||||
return round(float(1 - edit_distance(new, exist) / len(exist)) * 100, 2)
|
return round(float(1 - edit_distance(new, exist) / len(exist)) * 100, 2)
|
||||||
|
|
||||||
|
def wer_nltk(new: str, exist: str) -> float:
|
||||||
|
new = new.split()
|
||||||
|
exist = exist.split()
|
||||||
|
|
||||||
|
return round(float(1 - edit_distance(new, exist) / len(exist)) * 100, 2)
|
||||||
|
|
||||||
|
|
||||||
async def title_repeated(
|
async def title_repeated(
|
||||||
|
|
@ -948,7 +919,8 @@ async def title_repeated(
|
||||||
for i in data["hits"]["hits"]:
|
for i in data["hits"]["hits"]:
|
||||||
title = i["_source"]["title"]
|
title = i["_source"]["title"]
|
||||||
ids.append(
|
ids.append(
|
||||||
{"title": title, "id": i["_source"]["id"], "score" :cer_ntlk(exist=title, new=qanontitle)}
|
{"title": title, "id": i["_source"]["id"], "score" :wer_nltk(exist=title, new=qanontitle)}
|
||||||
|
# {"title": title, "id": i["_source"]["id"], "score" :cer_ntlk(exist=title, new=qanontitle)}
|
||||||
)
|
)
|
||||||
|
|
||||||
return sorted(ids, key=lambda x: x['score'], reverse=True)[:search_range]
|
return sorted(ids, key=lambda x: x['score'], reverse=True)[:search_range]
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,11 @@ from dependencies import _get_bale_token, _get_bale_bot
|
||||||
router = APIRouter(tags=["bale-bot"])
|
router = APIRouter(tags=["bale-bot"])
|
||||||
##############
|
##############
|
||||||
|
|
||||||
|
"""
|
||||||
|
deleteMessage
|
||||||
|
message_id
|
||||||
|
chat_id
|
||||||
|
"""
|
||||||
|
|
||||||
# @app.post(f"/webhook/{TOKEN}")
|
# @app.post(f"/webhook/{TOKEN}")
|
||||||
@router.post("/webhook/{token}", description="ربات قانون یار")
|
@router.post("/webhook/{token}", description="ربات قانون یار")
|
||||||
|
|
@ -18,15 +23,17 @@ async def webhook(
|
||||||
bale_bot: BaleBot = Depends(_get_bale_bot),
|
bale_bot: BaleBot = Depends(_get_bale_bot),
|
||||||
):
|
):
|
||||||
raw = await request.json()
|
raw = await request.json()
|
||||||
|
# print(' webhook request ', raw)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
update = BaleUpdate(**raw)
|
#تبدیل به آبجکت مدل
|
||||||
|
input_data = BaleUpdate(**raw)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("❌ Parse Error", e)
|
print("❌ Parse Error", e)
|
||||||
return {"ok": True}
|
return {"ok": True}
|
||||||
|
|
||||||
# print(f"update {update}")
|
# print(f"update {update}")
|
||||||
return await bale_bot.render_update(update)
|
return await bale_bot.render_update(input_data)
|
||||||
|
|
||||||
|
|
||||||
def initialize_webhook(webhook_url, set_webhook_url):
|
def initialize_webhook(webhook_url, set_webhook_url):
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
BACK_BUTTON = {"text": "⬅️ مرحله قبل", "callback_data": "workflow_back"}
|
BACK_BUTTON = {"text": "⬅️ مرحله قبل", "callback_data": "workflow_back"}
|
||||||
HOME_BUTTON = {"text": "🏠 خانه", "callback_data": "main"}
|
HOME_BUTTON = {"text": "🏠 خانه", "callback_data": "main"}
|
||||||
MORE_LIMIT_BUTTON = {"text": "بارگذاری نتایج بیشتر 10+", "callback_data": "more_limit"}
|
MORE_LIMIT_BUTTON = {"text": "بارگذاری نتایج بیشتر 10+", "callback_data": "more_limit"}
|
||||||
MORE_EFFORT_BUTTON = {"text": "🧠 بررسی عمیق تر", "callback_data": "more_effort"}
|
# MORE_EFFORT_BUTTON = {"text": "🧠 بررسی عمیق تر", "callback_data": "more_effort"}
|
||||||
|
MORE_EFFORT_BUTTON = {"text": "بررسی عمیق تر", "callback_data": "more_effort"}
|
||||||
|
|
||||||
BUTTON_TEXT_TO_CALLBACK_LIST = [
|
BUTTON_TEXT_TO_CALLBACK_LIST = [
|
||||||
{"text": "جستجو"},
|
{"text": "جستجو"},
|
||||||
|
|
|
||||||
|
|
@ -111,6 +111,7 @@ class BaleBot:
|
||||||
end_buttons=state_detail.end_buttons,
|
end_buttons=state_detail.end_buttons,
|
||||||
)
|
)
|
||||||
return {"ok": True}
|
return {"ok": True}
|
||||||
|
# if user.input_query != "" and not run_internal and
|
||||||
|
|
||||||
if run_internal == "subject_unities":
|
if run_internal == "subject_unities":
|
||||||
await self.handle_advanced_check_conflict(user)
|
await self.handle_advanced_check_conflict(user)
|
||||||
|
|
@ -119,7 +120,7 @@ class BaleBot:
|
||||||
handler = getattr(self, state_detail.handler)
|
handler = getattr(self, state_detail.handler)
|
||||||
await handler(user)
|
await handler(user)
|
||||||
except:
|
except:
|
||||||
await self.handle_main(user)
|
await self.handle_chat_in_law(user)
|
||||||
|
|
||||||
return {"ok": True}
|
return {"ok": True}
|
||||||
|
|
||||||
|
|
@ -418,6 +419,7 @@ class BaleBot:
|
||||||
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
|
user.input_query = ""
|
||||||
user.is_processing_lock = False
|
user.is_processing_lock = False
|
||||||
|
|
||||||
return {"ok": True}
|
return {"ok": True}
|
||||||
|
|
@ -425,6 +427,7 @@ class BaleBot:
|
||||||
async def handle_rule_making(self, user: BaleUser):
|
async def handle_rule_making(self, user: BaleUser):
|
||||||
|
|
||||||
user.is_processing_lock = True
|
user.is_processing_lock = True
|
||||||
|
user.effort = "medium"
|
||||||
try:
|
try:
|
||||||
result = await self.request_manager.get_result(
|
result = await self.request_manager.get_result(
|
||||||
payload={
|
payload={
|
||||||
|
|
@ -435,7 +438,9 @@ class BaleBot:
|
||||||
url="/rule_making",
|
url="/rule_making",
|
||||||
)
|
)
|
||||||
print(f"handle_rule_making {result}")
|
print(f"handle_rule_making {result}")
|
||||||
|
|
||||||
res_ = await self.formatter.form_rule_making(_input=result)
|
res_ = await self.formatter.form_rule_making(_input=result)
|
||||||
|
|
||||||
_buttons = [[HOME_BUTTON]]
|
_buttons = [[HOME_BUTTON]]
|
||||||
if user.effort != "medium":
|
if user.effort != "medium":
|
||||||
_buttons.append([MORE_EFFORT_BUTTON])
|
_buttons.append([MORE_EFFORT_BUTTON])
|
||||||
|
|
@ -443,10 +448,12 @@ class BaleBot:
|
||||||
user=user, chunked_text=res_, end_buttons=_buttons
|
user=user, chunked_text=res_, end_buttons=_buttons
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("ERROR in handle_chat:", str(traceback.print_exc()))
|
print("ERROR in handle_chat:", str(traceback.print_exc()))
|
||||||
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
||||||
finally:
|
finally:
|
||||||
|
user.input_query = ""
|
||||||
user.is_processing_lock = False
|
user.is_processing_lock = False
|
||||||
|
|
||||||
return {"ok": True}
|
return {"ok": True}
|
||||||
|
|
@ -466,14 +473,38 @@ class BaleBot:
|
||||||
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
||||||
finally:
|
finally:
|
||||||
user.is_processing_lock = False
|
user.is_processing_lock = False
|
||||||
|
user.input_query = ""
|
||||||
|
|
||||||
return {"ok": True}
|
return {"ok": True}
|
||||||
|
|
||||||
|
async def handle_talk(self, user: BaleUser):
|
||||||
|
user.is_processing_lock = True
|
||||||
|
try:
|
||||||
|
result = await self.request_manager.get_result(
|
||||||
|
payload={
|
||||||
|
"user_input": user.input_query,
|
||||||
|
},
|
||||||
|
url="/talk",
|
||||||
|
)
|
||||||
|
# answer
|
||||||
|
# answer_type
|
||||||
|
|
||||||
|
await self.send_message_helper(
|
||||||
|
user=user, chunked_text=result['answer'], end_buttons=MAIN_BUTTON
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
print("ERROR in handle_chat:", str(traceback.print_exc()))
|
||||||
|
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
||||||
|
finally:
|
||||||
|
user.is_processing_lock = False
|
||||||
|
|
||||||
|
return {"ok": True}
|
||||||
|
|
||||||
|
|
||||||
async def handle_conflict_qanon_asasi(self, user: BaleUser):
|
async def handle_conflict_qanon_asasi(self, user: BaleUser):
|
||||||
|
|
||||||
user.is_processing_lock = True
|
user.is_processing_lock = True
|
||||||
user.last_message_id = 0
|
user.last_message_id = 0
|
||||||
user.effort = "medium"
|
|
||||||
try:
|
try:
|
||||||
print(f"effort=user.effort {user.effort}")
|
print(f"effort=user.effort {user.effort}")
|
||||||
async for step_data in self.request_manager.stream_result(
|
async for step_data in self.request_manager.stream_result(
|
||||||
|
|
@ -562,6 +593,7 @@ class BaleBot:
|
||||||
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
||||||
finally:
|
finally:
|
||||||
user.is_processing_lock = False
|
user.is_processing_lock = False
|
||||||
|
user.input_query = ""
|
||||||
return {"ok": True}
|
return {"ok": True}
|
||||||
|
|
||||||
async def handle_conflict_law_writing_policy(self, user: BaleUser):
|
async def handle_conflict_law_writing_policy(self, user: BaleUser):
|
||||||
|
|
@ -593,6 +625,7 @@ class BaleBot:
|
||||||
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
|
# user.input_query = ""
|
||||||
user.is_processing_lock = False
|
user.is_processing_lock = False
|
||||||
return {"ok": True}
|
return {"ok": True}
|
||||||
|
|
||||||
|
|
@ -657,6 +690,7 @@ class BaleBot:
|
||||||
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
|
# user.input_query = ""
|
||||||
user.is_processing_lock = False
|
user.is_processing_lock = False
|
||||||
|
|
||||||
return {"ok": True}
|
return {"ok": True}
|
||||||
|
|
@ -723,6 +757,7 @@ class BaleBot:
|
||||||
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
|
# user.input_query = ""
|
||||||
user.is_processing_lock = False
|
user.is_processing_lock = False
|
||||||
|
|
||||||
return {"ok": True}
|
return {"ok": True}
|
||||||
|
|
@ -731,14 +766,17 @@ class BaleBot:
|
||||||
user.is_processing_lock = True
|
user.is_processing_lock = True
|
||||||
print(f"handle_advanced_check_conflict======================================")
|
print(f"handle_advanced_check_conflict======================================")
|
||||||
try:
|
try:
|
||||||
|
print(f'user.call_back_query {user.call_back_query}')
|
||||||
step, _type, qq_title = user.call_back_query.split(":")
|
step, _type, qq_title = user.call_back_query.split(":")
|
||||||
if _type == "qq":
|
if _type == "qq":
|
||||||
|
print('A')
|
||||||
groups = {}
|
groups = {}
|
||||||
for qanon_title, item in user.subject_unities.items():
|
for qanon_title, item in user.subject_unities.items():
|
||||||
if qanon_title == qq_title:
|
if qanon_title == qq_title:
|
||||||
for i in item:
|
for i in item:
|
||||||
groups[qanon_title] = i.db_rule.section_id
|
groups[qanon_title] = i.db_rule.section_id
|
||||||
|
|
||||||
|
print('B')
|
||||||
if len(groups) > 1:
|
if len(groups) > 1:
|
||||||
_button = []
|
_button = []
|
||||||
for i, (k, v) in enumerate(groups.items(), start=1):
|
for i, (k, v) in enumerate(groups.items(), start=1):
|
||||||
|
|
@ -752,8 +790,10 @@ class BaleBot:
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
user.call_back_query = f"subject_unities:qs:{groups[qq_title]}"
|
user.call_back_query = f"subject_unities:qs:{groups[qq_title]}"
|
||||||
|
print('ccccc')
|
||||||
|
|
||||||
elif _type == "qs":
|
elif _type == "qs":
|
||||||
|
print('AAA@@@')
|
||||||
content = None
|
content = None
|
||||||
for k, v in user.subject_unities.items():
|
for k, v in user.subject_unities.items():
|
||||||
if v.db_rule.section_id == qq_title:
|
if v.db_rule.section_id == qq_title:
|
||||||
|
|
@ -816,6 +856,7 @@ class BaleBot:
|
||||||
print("ERROR in handle_chat:", str(traceback.print_exc()))
|
print("ERROR in handle_chat:", str(traceback.print_exc()))
|
||||||
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
||||||
finally:
|
finally:
|
||||||
|
# user.input_query = ""
|
||||||
user.is_processing_lock = False
|
user.is_processing_lock = False
|
||||||
|
|
||||||
return {"ok": True}
|
return {"ok": True}
|
||||||
|
|
@ -826,15 +867,12 @@ class BaleBot:
|
||||||
|
|
||||||
user.is_processing_lock = True
|
user.is_processing_lock = True
|
||||||
user.last_query = user.input_query
|
user.last_query = user.input_query
|
||||||
|
|
||||||
# گرفتن آخرین runtime
|
|
||||||
effort = user.effort
|
|
||||||
try:
|
try:
|
||||||
# اگر runtime تغییر کرده یا نتیجه قبلی وجود ندارد → درخواست جدید
|
# اگر runtime تغییر کرده یا نتیجه قبلی وجود ندارد → درخواست جدید
|
||||||
result = await self.request_manager.get_result(
|
result = await self.request_manager.get_result(
|
||||||
payload={
|
payload={
|
||||||
"section_content": user.input_query,
|
"section_content": user.input_query,
|
||||||
"effort": effort,
|
"effort": user.effort,
|
||||||
"limit": user.limit,
|
"limit": user.limit,
|
||||||
"mode_type": "bale",
|
"mode_type": "bale",
|
||||||
},
|
},
|
||||||
|
|
@ -846,10 +884,11 @@ class BaleBot:
|
||||||
)
|
)
|
||||||
_buttons = [[HOME_BUTTON]]
|
_buttons = [[HOME_BUTTON]]
|
||||||
_b = []
|
_b = []
|
||||||
|
if result['answer_type'] == 'legal_question':
|
||||||
if user.limit < self.max_limit:
|
if user.limit < self.max_limit:
|
||||||
_b += [MORE_LIMIT_BUTTON]
|
_b += [MORE_LIMIT_BUTTON]
|
||||||
|
|
||||||
if effort != "medium":
|
if user.effort != "medium":
|
||||||
_b += [MORE_EFFORT_BUTTON]
|
_b += [MORE_EFFORT_BUTTON]
|
||||||
|
|
||||||
if len(_b) > 0:
|
if len(_b) > 0:
|
||||||
|
|
@ -863,6 +902,7 @@ class BaleBot:
|
||||||
print("ERROR in handle_chat:", str(traceback.print_exc()))
|
print("ERROR in handle_chat:", str(traceback.print_exc()))
|
||||||
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
||||||
finally:
|
finally:
|
||||||
|
user.input_query = ""
|
||||||
user.is_processing_lock = False
|
user.is_processing_lock = False
|
||||||
|
|
||||||
async def handle_stream_chat(self, user: BaleUser):
|
async def handle_stream_chat(self, user: BaleUser):
|
||||||
|
|
@ -957,6 +997,7 @@ class BaleBot:
|
||||||
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
await self.send_message_helper(user=user, text=ERROR_IN_PROCESS)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
|
user.input_query = ""
|
||||||
user.is_processing_lock = False
|
user.is_processing_lock = False
|
||||||
|
|
||||||
return {"ok": True}
|
return {"ok": True}
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,32 @@ from typing import Optional, Callable, List, Any
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class DbRule(BaseModel):
|
||||||
|
rule_id: str
|
||||||
|
rule_content: str
|
||||||
|
rule_type: str
|
||||||
|
section_id: str
|
||||||
|
section_content: str
|
||||||
|
section_full_path :str
|
||||||
|
qanon_id: str
|
||||||
|
qanon_etebar: str
|
||||||
|
qanon_title: str
|
||||||
|
state_etebar: str
|
||||||
|
|
||||||
|
class InputRule(BaseModel):
|
||||||
|
rule_id: str
|
||||||
|
rule_content: str
|
||||||
|
rule_type: str
|
||||||
|
section_id: str
|
||||||
|
section_content: str
|
||||||
|
|
||||||
|
class SemanticSearchP2P(BaseModel):
|
||||||
|
in_rule: InputRule
|
||||||
|
db_rule: DbRule
|
||||||
|
score: float = 0
|
||||||
|
metadata: Dict
|
||||||
|
|
||||||
class BaleStartMessageForm(BaseModel):
|
class BaleStartMessageForm(BaseModel):
|
||||||
id: int
|
id: int
|
||||||
is_bot: bool = False
|
is_bot: bool = False
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ from router.bale.base_model import StateDetail
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
BUSY_TEXT = ("""⏳ تا اتمام پردازش قبلی منتظر بمانید ⏳""",)
|
BUSY_TEXT = ("""⏳ درخواست قبلی شما در حال پردازش هست، لطفا تا اتمام آن منتظر بمانید ⏳""",)
|
||||||
|
|
||||||
|
|
||||||
class StateRegistry:
|
class StateRegistry:
|
||||||
|
|
@ -30,42 +30,42 @@ STATE = [
|
||||||
state="chat_in_law",
|
state="chat_in_law",
|
||||||
button_text="گفتگو طبق قوانین کشور",
|
button_text="گفتگو طبق قوانین کشور",
|
||||||
end_buttons=[],
|
end_buttons=[],
|
||||||
message="""💬 با احترام، آماده گفتگو هستم""",
|
message="""💬 با احترام، آماده گفتگو هستم، لطفا سوال خود را بپرسید""",
|
||||||
handler="handle_chat_in_law",
|
handler="handle_chat_in_law",
|
||||||
),
|
),
|
||||||
StateDetail(
|
StateDetail(
|
||||||
state="logical_chat_in_law",
|
state="logical_chat_in_law",
|
||||||
button_text="گفتگوی حقوقی دقیق تر 🧠💬",
|
button_text="گفتگو با متن حقوقی 💬",
|
||||||
end_buttons=[],
|
end_buttons=[],
|
||||||
message="""💬 با عرض ادب و احترام، آماده گفتگو حقوقی دقیق هستم""",
|
message="""💬 با عرض ادب و احترام، آماده گفتگو طبق یک متن حقوقی هستم، لطفا متن ماده یا تبصره وارد کنید""",
|
||||||
handler="handle_logical_chat_in_law",
|
handler="handle_logical_chat_in_law",
|
||||||
),
|
),
|
||||||
StateDetail(
|
StateDetail(
|
||||||
state="conflict_law_writing_policy",
|
state="conflict_law_writing_policy",
|
||||||
button_text="بررسی مغایرت با سیاست های قانون گذاری 📜",
|
button_text="بررسی مغایرت با سیاست های قانون گذاری 📜",
|
||||||
end_buttons=[],
|
end_buttons=[],
|
||||||
message="""متن مورد نظر برای بررسی مغایرت با سیاست های قانون گذاری را وارد کنید :""",
|
message="""لطفا متن قانونی مورد نظر برای بررسی مغایرت با سیاست های قانون گذاری را وارد کنید :""",
|
||||||
handler="handle_conflict_law_writing_policy",
|
handler="handle_conflict_law_writing_policy",
|
||||||
),
|
),
|
||||||
StateDetail(
|
StateDetail(
|
||||||
state="conflict_qanon_asasi",
|
state="conflict_qanon_asasi",
|
||||||
button_text="بررسی مغایرت با اصول مهم قانون اساسی ⚖️",
|
button_text="بررسی مغایرت با اصول مهم قانون اساسی ⚖️",
|
||||||
end_buttons=[],
|
end_buttons=[],
|
||||||
message="""متن مورد نظر برای بررسی مغایرت با اصول مهم قانون اساسی را وارد کنید :""",
|
message="""لطفا متن قانونی مورد نظر برای بررسی مغایرت با اصول مهم قانون اساسی را وارد کنید :""",
|
||||||
handler="handle_conflict_qanon_asasi",
|
handler="handle_conflict_qanon_asasi",
|
||||||
),
|
),
|
||||||
StateDetail(
|
StateDetail(
|
||||||
state="conflict_general_policy",
|
state="conflict_general_policy",
|
||||||
button_text="بررسی مغایرت با سیاست های کلی نظام 🏛️",
|
button_text="بررسی مغایرت با سیاست های کلی نظام 🏛️",
|
||||||
end_buttons=[],
|
end_buttons=[],
|
||||||
message="""متن مورد نظر برای بررسی مغایرت با سیاست های کلی نظام را وارد کنید :""",
|
message="""لطفا متن قانونی مورد نظر برای بررسی مغایرت با سیاست های کلی نظام را وارد کنید :""",
|
||||||
handler="handle_conflict_general_policy",
|
handler="handle_conflict_general_policy",
|
||||||
),
|
),
|
||||||
StateDetail(
|
StateDetail(
|
||||||
state="conflict_all_qavanin",
|
state="conflict_all_qavanin",
|
||||||
button_text="بررسی مغایرت در تمام قوانین",
|
button_text="بررسی مغایرت در تمام قوانین",
|
||||||
end_buttons=[],
|
end_buttons=[],
|
||||||
message="""متن مورد نظر برای بررسی مغایرت در تمام قوانین جمهوری اسلامی ایران را وارد کنید :""",
|
message="""لطفا متن قانونی مورد نظر برای بررسی مغایرت در تمام قوانین جمهوری اسلامی ایران را وارد کنید :""",
|
||||||
handler="handle_conflict_all_qavanin",
|
handler="handle_conflict_all_qavanin",
|
||||||
),
|
),
|
||||||
StateDetail(
|
StateDetail(
|
||||||
|
|
@ -78,16 +78,16 @@ STATE = [
|
||||||
StateDetail(
|
StateDetail(
|
||||||
state="rule_making",
|
state="rule_making",
|
||||||
handler="handle_rule_making",
|
handler="handle_rule_making",
|
||||||
button_text="استخراج اجزاء حقوقی متن",
|
button_text="استخراج اجزاء متن",
|
||||||
end_buttons=[],
|
end_buttons=[],
|
||||||
message="""متن مورد نظر برای استخراج اجزاء حقوقی را وارد کنید :""",
|
message="""خوبه، لطفا متن مورد نظر برای استخراج اجزاء حقوقی را وارد کنید :""",
|
||||||
),
|
),
|
||||||
StateDetail(
|
StateDetail(
|
||||||
state="beta",
|
state="beta",
|
||||||
handler="handle_beta",
|
handler="handle_talk",
|
||||||
button_text="BETA-Mode",
|
button_text="BETA-Mode",
|
||||||
end_buttons=[],
|
end_buttons=[],
|
||||||
message="""این قسمت در دست توسعه قرار دارد ...""",
|
message="""""",
|
||||||
),
|
),
|
||||||
StateDetail(
|
StateDetail(
|
||||||
state="contact_us",
|
state="contact_us",
|
||||||
|
|
@ -132,15 +132,15 @@ def build_buttons_form(button_form):
|
||||||
|
|
||||||
# Button-STYLE
|
# Button-STYLE
|
||||||
main_button_form = [
|
main_button_form = [
|
||||||
["search_in_law"],
|
|
||||||
["chat_in_law"],
|
["chat_in_law"],
|
||||||
|
["search_in_law"],
|
||||||
["logical_chat_in_law"],
|
["logical_chat_in_law"],
|
||||||
["rule_making"],
|
["rule_making"],
|
||||||
|
["qanon_title_repeat"],
|
||||||
["conflict_law_writing_policy"],
|
["conflict_law_writing_policy"],
|
||||||
["conflict_qanon_asasi"],
|
["conflict_qanon_asasi"],
|
||||||
["conflict_general_policy"],
|
["conflict_general_policy"],
|
||||||
["conflict_all_qavanin"],
|
["conflict_all_qavanin"],
|
||||||
["qanon_title_repeat"],
|
|
||||||
["contact_us", "about_us", "beta"]
|
["contact_us", "about_us", "beta"]
|
||||||
]
|
]
|
||||||
MAIN_BUTTON = build_buttons_form(main_button_form)
|
MAIN_BUTTON = build_buttons_form(main_button_form)
|
||||||
Loading…
Reference in New Issue
Block a user