@ -12,6 +12,26 @@ CACERT_PATH = os.path.join(BASE_DIR, 'cacert.pem')
max_verify = CACERT_PATH
max_verify = CACERT_PATH
url_max = " https://platform-api2.max.ru "
url_max = " https://platform-api2.max.ru "
MAX_API_TIMEOUT = ( 3.05 , 15 )
def _max_request ( method : str , url : str , parse_json : bool = False , * * kwargs ) :
""" Один вызов MAX API: с таймаутом и без исключения наружу.
Возвращает тот же словарь , что и функции модуля .
Сетевая ошибка или таймаут дают success = False , а не исключение :
иначе вебхук отвечает 500 и MAX повторяет доставку — залп растёт .
"""
kwargs . setdefault ( " verify " , max_verify )
kwargs [ " timeout " ] = MAX_API_TIMEOUT
try :
response = requests . request ( method , url , * * kwargs )
data = response . json ( ) if parse_json else response
return { " success " : True , " error " : " " , " data " : data }
except requests . RequestException as exc :
empty = { " messages " : [ ] } if parse_json else None
return { " success " : False , " error " : f " max api request failed: { exc } " , " data " : empty }
def maxbot_send_text_message ( chat_id : str , max_token : str , message : str ) :
def maxbot_send_text_message ( chat_id : str , max_token : str , message : str ) :
url = f " { url_max } /messages?chat_id= { chat_id } "
url = f " { url_max } /messages?chat_id= { chat_id } "
@ -25,8 +45,7 @@ def maxbot_send_text_message(chat_id: str, max_token: str, message: str):
' Content-Type ' : ' application/json '
' Content-Type ' : ' application/json '
}
}
response = requests . request ( " POST " , url , headers = headers , data = payload , verify = max_verify )
rt = _max_request ( " POST " , url , headers = headers , data = payload )
rt = { ' success ' : True , ' error ' : ' ' , ' data ' : response }
return rt
return rt
@ -47,8 +66,7 @@ def maxbot_send_img_message(chat_id: str, max_token: str, message: str, img: str
' Authorization ' : f ' { max_token } ' ,
' Authorization ' : f ' { max_token } ' ,
' Content-Type ' : ' application/json '
' Content-Type ' : ' application/json '
}
}
response = requests . request ( " POST " , url , headers = headers , data = payload , verify = max_verify )
rt = _max_request ( " POST " , url , headers = headers , data = payload )
rt = { ' success ' : True , ' error ' : ' ' , ' data ' : response }
return rt
return rt
@ -94,8 +112,7 @@ def maxbot_send_menu_button(client: Client, chat_id: str, max_token: str, messag
' Content-Type ' : ' application/json '
' Content-Type ' : ' application/json '
}
}
response = requests . request ( " POST " , url , headers = headers , data = payload , verify = max_verify )
rt = _max_request ( " POST " , url , headers = headers , data = payload )
rt = { ' success ' : True , ' error ' : ' ' , ' data ' : response }
return rt
return rt
@ -108,8 +125,7 @@ def maxbot_get_all_messages(chat_id: str, max_token: str):
' Authorization ' : f ' { max_token } ' ,
' Authorization ' : f ' { max_token } ' ,
' Content-Type ' : ' application/json '
' Content-Type ' : ' application/json '
}
}
response = requests . request ( " GET " , url , headers = headers , data = payload , verify = max_verify )
rt = _max_request ( " GET " , url , headers = headers , data = payload , parse_json = True )
rt = { ' success ' : True , ' error ' : ' ' , ' data ' : response . json ( ) }
return rt
return rt
@ -122,8 +138,7 @@ def maxbot_del_messages(max_token: str, message_id: str):
' Authorization ' : f ' { max_token } ' ,
' Authorization ' : f ' { max_token } ' ,
' Content-Type ' : ' application/json '
' Content-Type ' : ' application/json '
}
}
response = requests . request ( " DELETE " , url , headers = headers , data = payload , verify = max_verify )
rt = _max_request ( " DELETE " , url , headers = headers , data = payload , parse_json = True )
rt = { ' success ' : True , ' error ' : ' ' , ' data ' : response . json ( ) }
return rt
return rt
@ -160,8 +175,7 @@ def maxbot_get_phone(chat_id: str, max_token: str, text: str):
' Content-Type ' : ' application/json '
' Content-Type ' : ' application/json '
}
}
response = requests . request ( " POST " , url , headers = headers , data = payload , verify = max_verify )
rt = _max_request ( " POST " , url , headers = headers , data = payload )
rt = { ' success ' : True , ' error ' : ' ' , ' data ' : response }
return rt
return rt
@ -200,8 +214,7 @@ def maxbot_send_day_button(client: Client, chat_id: str, max_token: str, message
' Content-Type ' : ' application/json '
' Content-Type ' : ' application/json '
}
}
response = requests . request ( " POST " , url , headers = headers , data = payload , verify = max_verify )
rt = _max_request ( " POST " , url , headers = headers , data = payload )
rt = { ' success ' : True , ' error ' : ' ' , ' data ' : response }
return rt
return rt
@ -244,8 +257,7 @@ def maxbot_send_month_button(client: Client, chat_id: str, max_token: str, messa
' Content-Type ' : ' application/json '
' Content-Type ' : ' application/json '
}
}
response = requests . request ( " POST " , url , headers = headers , data = payload , verify = max_verify )
rt = _max_request ( " POST " , url , headers = headers , data = payload )
rt = { ' success ' : True , ' error ' : ' ' , ' data ' : response }
return rt
return rt
@ -297,8 +309,7 @@ def maxbot_send_feedback_button(client: Client, chat_id: str, max_token: str, me
' Content-Type ' : ' application/json '
' Content-Type ' : ' application/json '
}
}
response = requests . request ( " POST " , url , headers = headers , data = payload , verify = max_verify )
rt = _max_request ( " POST " , url , headers = headers , data = payload )
rt = { ' success ' : True , ' error ' : ' ' , ' data ' : response }
return rt
return rt
@ -338,8 +349,7 @@ def maxbot_send_booking_count_people_button(client: Client, chat_id: str, max_to
' Content-Type ' : ' application/json '
' Content-Type ' : ' application/json '
}
}
response = requests . request ( " POST " , url , headers = headers , data = payload , verify = max_verify )
rt = _max_request ( " POST " , url , headers = headers , data = payload )
rt = { ' success ' : True , ' error ' : ' ' , ' data ' : response }
return rt
return rt
@ -371,8 +381,7 @@ def maxbot_send_link_button(text, title_button, link, chat_id, max_token):
' Content-Type ' : ' application/json '
' Content-Type ' : ' application/json '
}
}
response = requests . request ( " POST " , url , headers = headers , data = payload , verify = max_verify )
rt = _max_request ( " POST " , url , headers = headers , data = payload )
rt = { ' success ' : True , ' error ' : ' ' , ' data ' : response }
def maxbot_set_commands ( max_token : str , commands : list ) - > requests . Response :
def maxbot_set_commands ( max_token : str , commands : list ) - > requests . Response :
@ -394,5 +403,10 @@ def maxbot_set_commands(max_token: str, commands: list) -> requests.Response:
' Content-Type ' : ' application/json '
' Content-Type ' : ' application/json '
}
}
payload = { " commands " : commands }
payload = { " commands " : commands }
response = requests . patch ( url , headers = headers , json = payload , verify = max_verify )
try :
response = requests . patch ( url , headers = headers , json = payload ,
verify = max_verify , timeout = MAX_API_TIMEOUT )
except requests . RequestException as exc :
print ( f " max api set_commands failed: { exc } " )
return None
return response
return response