diff --git a/README.md b/README.md index fa5868e..e13dd39 100644 --- a/README.md +++ b/README.md @@ -230,6 +230,8 @@ Select a number from the list to check how the sending method works! *11*. Create a group with the bot 👥 *12*. Quote message ©️ *13*. About PYTHON GREEN API chatbot 🦎 +*14*. 🔥 Conversation with ChatGPT 🤖 +*15*. Interactive buttons 📌 To return to the beginning, write *stop* or *0* ``` @@ -243,7 +245,7 @@ This message was sent via the sendMessage method To find out how the method works, follow the link https://green-api.com/docs/api/sending/SendMessage/ ``` -If you send something other than numbers 1-13, the chatbot will briefly respond: +If you send something other than numbers 1-15, the chatbot will briefly respond: ``` Sorry, I didn't quite understand you, write a menu to see the possible options ``` diff --git a/README_RU.md b/README_RU.md index 928534a..4b9839c 100644 --- a/README_RU.md +++ b/README_RU.md @@ -249,6 +249,8 @@ GREEN API предоставляет отправку данных следую *11*. Создать группу с ботом 👥 *12*. Цитировать сообщение ©️ *13*. О PYTHON GREEN API чат-боте 🦎 +*14.* 🔥 Разговор с ChatGPT 🤖 +*15.* Интерактивные кнопки 📌 Чтобы вернуться в начало напишите *стоп* или *0* ``` @@ -261,7 +263,7 @@ GREEN API предоставляет отправку данных следую Чтобы узнать как работает метод, пройдите по ссылке https://green-api.com/docs/api/sending/SendMessage/ ``` -Если отправить что-то помимо чисел 1-13, то чатбот лаконично ответит: +Если отправить что-то помимо чисел 1-15, то чатбот лаконично ответит: ``` Извините, я не совсем вас понял, напишите меню, чтобы посмотреть возможные опции ``` diff --git a/bot.py b/bot.py index 2b8c350..a2743ab 100644 --- a/bot.py +++ b/bot.py @@ -720,6 +720,77 @@ def main_menu_option_13_handler(notification: Notification) -> None: caption=about_text, ) +@bot.router.message( + type_message=TEXT_TYPES, + state=States.MENU.value, + regexp=r"^\s*15\s*$", +) +@debug_profiler(logger=logger) +def main_menu_option_15_handler(notification: Notification) -> None: + """ + "Send interactive buttons" option handler for senders with `MENU` state. + """ + if sender_state_data_updater(notification): + return initial_handler(notification) + + sender = notification.sender + sender_state_data = notification.state_manager.get_state_data(sender) + + try: + sender_lang_code = sender_state_data[LANGUAGE_CODE_KEY] + + message_text = ( + f'{answers_data["sending_buttons_notice"][sender_lang_code]}' + f'{answers_data["buttons_warning"][sender_lang_code]}' + f'{answers_data["send_poll_message_1"][sender_lang_code]}' + f'{answers_data["links"][sender_lang_code]["send_interactive_buttons_documentation"]}\n' + f'{answers_data["links"][sender_lang_code]["send_interactive_buttons_reply_documentation"]}' + ) + + buttons_demo_title = answers_data["buttons_demo_title"][sender_lang_code] + buttons_demo_message = answers_data["buttons_demo_message"][sender_lang_code] + answers_data["links"][sender_lang_code]["send_interactive_buttons_documentation"] + buttons_demo_footer = answers_data["buttons_demo_footer"][sender_lang_code] + + reply_buttons_title = answers_data["reply_buttons_title"][sender_lang_code] + reply_buttons_message = answers_data["reply_buttons_message"][sender_lang_code] + answers_data["links"][sender_lang_code]["send_interactive_buttons_reply_documentation"] + reply_buttons_footer = answers_data["reply_buttons_footer"][sender_lang_code] + + notification.answer(message_text) + + notification.answer_with_interactive_buttons( + buttons_demo_message, + [{ + "type": "call", + "buttonId": "1", + "buttonText": answers_data["call_me_button"][sender_lang_code], + "phoneNumber": "79123456789" + }, + { + "type": "url", + "buttonId": "2", + "buttonText": answers_data["link_button"][sender_lang_code], + "url": answers_data["links"][sender_lang_code]["send_interactive_buttons_documentation"] + }], + buttons_demo_title, + buttons_demo_footer + ) + + notification.answer_with_interactive_buttons_reply( + reply_buttons_message, + [{ + "buttonId": "menu_button", + "buttonText": answers_data["menu_button"][sender_lang_code] + }, + { + "buttonId": "stop_button", + "buttonText": answers_data["stop_button"][sender_lang_code] + }], + reply_buttons_title, + reply_buttons_footer + ) + except Exception as e: + logger.exception(e) + return @bot.router.message( type_message=TEXT_TYPES, @@ -794,6 +865,47 @@ def main_menu_menu_handler(notification: Notification) -> None: caption=answer_text, ) +@bot.router.message(type_message="templateButtonsReplyMessage") +@debug_profiler(logger=logger) +def template_buttons_reply_handler(notification: Notification) -> None: + """ + Handler for template buttons replies + """ + if sender_state_data_updater(notification): + return initial_handler(notification) + + sender = notification.sender + sender_state_data = notification.state_manager.get_state_data(sender) + + try: + event = notification.event + message_data = event.get("messageData", {}) + + template_button_data = message_data.get("templateButtonsReplyMessage", {}) + if not template_button_data: + template_button_data = message_data + + selected_button_id = template_button_data.get("selectedId", "unknown") + + if selected_button_id == "unknown" and "templateButtonReplyMessage" in message_data: + button_data = message_data["templateButtonReplyMessage"] + selected_button_id = button_data.get("selectedId", "unknown") + + sender_lang_code = sender_state_data.get(LANGUAGE_CODE_KEY, "en") + + if selected_button_id == "menu_button": + notification.state_manager.update_state(sender, States.MENU.value) + return main_menu_menu_handler(notification) + elif selected_button_id == "stop_button": + notification.state_manager.update_state(sender, States.MENU.value) + return main_menu_stop_handler(notification) + else: + unknown_button_answer = answers_data.get("unknown_button", {}).get(sender_lang_code, "Unknown button clicked") + notification.answer(unknown_button_answer) + + except Exception as e: + logger.exception(f"Error in template_buttons_reply_handler: {e}") + notification.answer("Error processing button click") @bot.router.message( state=States.CHAT_GPT.value, diff --git a/config/data.yml b/config/data.yml index e8bdc35..277133f 100644 --- a/config/data.yml +++ b/config/data.yml @@ -16,12 +16,12 @@ stop_message: ar: "" kz: "GREEN API чат-ботты пайдаланғаныңыз үшін рақмет, " menu: - ru: "\n\nGREEN API предоставляет отправку данных следующих видов. \nВыберите цифру из списка, чтобы проверить как работает метод отправки!\nИсходный код демо чат-бота: https://github.com/green-api/whatsapp-demo-chatbot-python\n\n*1*. Текстовое сообщение 📩\n*2*. Файл 📋\n*3*. Картинка 🖼\n*4*. Аудио 🎵\n*5*. Видео 📽\n*6*. Контакт 📱\n*7*. Геолокация 🌎\n*8*. Опрос ✔\n*9*. Получить картинку моего аватара 👤\n*10*. Отправить ссылку 🔗\n*11*. Создать группу с ботом 👥\n*12*. Цитировать сообщение ©️\n*13*. О PYTHON GREEN API чат-боте 🦎\n*14*. 🔥 Разговор с ChatGPT 🤖\n\nЧтобы вернуться в начало напишите *стоп* или *0*" - en: "\n\nGREEN API provides the following kinds of message services. \nType in a number to see how the corresponding method works!\nDemo chatbot source code: https://github.com/green-api/whatsapp-demo-chatbot-python\n\n*1*. Text message 📩\n*2*. File 📋\n*3*. Image 🖼\n*4*. Audio 🎵\n*5*. Video 📽\n*6*. Contact 📱\n*7*. Location 🌎\n*8*. Poll ✔\n*9*. Get image of my avatar 👤\n*10*. Send link 🔗\n*11*. Create group with bot 👥\n*12*. Quote message ©️\n*13*. About PYTHON GREEN API chatbot 🦎\n*14*. 🔥 Conversation with ChatGPT 🤖\n\nTo restart the conversation type *stop* or *0*" - he: "\n\nGREEN API מספק את סוגי שירותי ההודעות הבאים. הקלד מספר כדי לראות כיצד פועלת השיטה המתאימה!\nקוד המקור של הצ'אטבוט ההדגמה: https://github.com/green-api/whatsapp-demo-chatbot-python\n\n*1*. הודעת טקסט 📩\n*2*. קובץ 📋\n*3*. תמונה 🖼\n*4*. אודיו 🎵\n*5*. סרטון 📽\n*6*. צור קשר 📱\n*7*. מיקום 🌎\n*8*. סקר ✔\n*9*. קבל תמונה של הדמות שלי 👤\n*10*. שלח קישור 🔗\n*11*. צור קבוצה עם בוט 👥\n*12*. הודעת ציטוט ©️\n*13*. אודות PYTHON GREEN API צ'אט-בוט 🦎\n*14*. 🔥 שיחה עם ChatGPT 🤖\n\nכדי להפעיל מחדש את השיחה הקלד *stop* או 0\n" - es: "\n\nGREEN API proporciona los siguientes tipos de servicios de mensajes. \n¡Escriba un número para ver cómo funciona el método correspondiente!\nCódigo fuente del chatbot de demostración: https://github.com/green-api/whatsapp-demo-chatbot-python\n\n*1*. Mensaje de texto 📩\n*2*. Archivo 📋\n*3*. Imagen 🖼\n*4*. Audio 🎵\n*5*. Video 📽\n*6*. Contacto 📱\n*7*. Ubicación 🌎\n*8*. Encuesta ✔\n*9*. Obtener imagen de mi avatar 👤\n*10*. Enviar enlace 🔗\n*11*. Crear grupo con bot 👥\n*12*. Mensaje citado ©️\n*13*. Acerca de PYTHON GREEN API chatbot 🦎\n*14*. 🔥 Conversación con ChatGPT 🤖\n\nPara reiniciar la conversación escriba *stop* o *0*" + ru: "\n\nGREEN API предоставляет отправку данных следующих видов. \nВыберите цифру из списка, чтобы проверить как работает метод отправки!\nИсходный код демо чат-бота: https://github.com/green-api/whatsapp-demo-chatbot-python\n\n*1*. Текстовое сообщение 📩\n*2*. Файл 📋\n*3*. Картинка 🖼\n*4*. Аудио 🎵\n*5*. Видео 📽\n*6*. Контакт 📱\n*7*. Геолокация 🌎\n*8*. Опрос ✔\n*9*. Получить картинку моего аватара 👤\n*10*. Отправить ссылку 🔗\n*11*. Создать группу с ботом 👥\n*12*. Цитировать сообщение ©️\n*13*. О PYTHON GREEN API чат-боте 🦎\n*14*. 🔥 Разговор с ChatGPT 🤖\n*15*. Интерактивные кнопки 📌\n\nЧтобы вернуться в начало напишите *стоп* или *0*" + en: "\n\nGREEN API provides the following kinds of message services. \nType in a number to see how the corresponding method works!\nDemo chatbot source code: https://github.com/green-api/whatsapp-demo-chatbot-python\n\n*1*. Text message 📩\n*2*. File 📋\n*3*. Image 🖼\n*4*. Audio 🎵\n*5*. Video 📽\n*6*. Contact 📱\n*7*. Location 🌎\n*8*. Poll ✔\n*9*. Get image of my avatar 👤\n*10*. Send link 🔗\n*11*. Create group with bot 👥\n*12*. Quote message ©️\n*13*. About PYTHON GREEN API chatbot 🦎\n*14*. 🔥 Conversation with ChatGPT 🤖\n*15*. Interactive buttons 📌\n\nTo restart the conversation type *stop* or *0*" + he: "\n\nGREEN API מספק את סוגי שירותי ההודעות הבאים. הקלד מספר כדי לראות כיצד פועלת השיטה המתאימה!\nקוד המקור של הצ'אטבוט ההדגמה: https://github.com/green-api/whatsapp-demo-chatbot-python\n\n*1*. הודעת טקסט 📩\n*2*. קובץ 📋\n*3*. תמונה 🖼\n*4*. אודיו 🎵\n*5*. סרטון 📽\n*6*. צור קשר 📱\n*7*. מיקום 🌎\n*8*. סקר ✔\n*9*. קבל תמונה של הדמות שלי 👤\n*10*. שלח קישור 🔗\n*11*. צור קבוצה עם בוט 👥\n*12*. הודעת ציטוט ©️\n*13*. אודות PYTHON GREEN API צ'אט-בוט 🦎\n*14*. 🔥 שיחה עם ChatGPT 🤖\n *15*. כפתורים אינטראקטיביים📌 \nכדי להפעיל מחדש את השיחה הקלד *stop* או 0\n" + es: "\n\nGREEN API proporciona los siguientes tipos de servicios de mensajes. \n¡Escriba un número para ver cómo funciona el método correspondiente!\nCódigo fuente del chatbot de demostración: https://github.com/green-api/whatsapp-demo-chatbot-python\n\n*1*. Mensaje de texto 📩\n*2*. Archivo 📋\n*3*. Imagen 🖼\n*4*. Audio 🎵\n*5*. Video 📽\n*6*. Contacto 📱\n*7*. Ubicación 🌎\n*8*. Encuesta ✔\n*9*. Obtener imagen de mi avatar 👤\n*10*. Enviar enlace 🔗\n*11*. Crear grupo con bot 👥\n*12*. Mensaje citado ©️\n*13*. Acerca de PYTHON GREEN API chatbot 🦎\n*14*. 🔥 Conversación con ChatGPT 🤖\n*15*. Botones interactivos📌\n\nPara reiniciar la conversación escriba *stop* o *0*" ar: "" - kz: "\n\nGREEN API келесі көрсетілген түрдегі деректерді жіберуді қамтамасыз етеді. \nЖіберу әдістерін тексеру үшін тізімнен сан таңдаңыз!\nДемо чатботтың бастапқы коды: https://github.com/green-api/whatsapp-demo-chatbot-python\n\n*1*. Мәтінді хабарлама 📩\n*2*. Файл 📋\n*3*. Сурет 🖼\n*4*. Аудио 🎵\n*5*. Видео 📽\n*6*. Контакт 📱\n*7*. Геолокация 🌎\n*8*. Сауалнама ✔\n*9*. Менің аватарымның суретін алу 👤\n*10*. Сілтеме жіберу 🔗\n*11*. Ботпен топ құру 👥\n*12*. Хабарламаға дәйексөз келтіру ©️\n*13*. PYTHON GREEN API чат-боты туралы 🦎\n*14*. 🔥 ChatGPT-мен әңгімелесу 🤖\n\n\n\nБасына оралу үшін *стоп* немеcе *0* деп жазыңыз" + kz: "\n\nGREEN API келесі көрсетілген түрдегі деректерді жіберуді қамтамасыз етеді. \nЖіберу әдістерін тексеру үшін тізімнен сан таңдаңыз!\nДемо чатботтың бастапқы коды: https://github.com/green-api/whatsapp-demo-chatbot-python\n\n*1*. Мәтінді хабарлама 📩\n*2*. Файл 📋\n*3*. Сурет 🖼\n*4*. Аудио 🎵\n*5*. Видео 📽\n*6*. Контакт 📱\n*7*. Геолокация 🌎\n*8*. Сауалнама ✔\n*9*. Менің аватарымның суретін алу 👤\n*10*. Сілтеме жіберу 🔗\n*11*. Ботпен топ құру 👥\n*12*. Хабарламаға дәйексөз келтіру ©️\n*13*. PYTHON GREEN API чат-боты туралы 🦎\n*14*. 🔥 ChatGPT-мен әңгімелесу 🤖\n*15*.Интерактивті түймелер 📌\n\nБасына оралу үшін *стоп* немеcе *0* деп жазыңыз" send_text_message: ru: "Это сообщение отправлено через метод *sendMessage*.\n\nЧтобы узнать как работает метод, пройдите по ссылке\n" en: "This message is sent via *sendMessage* method.\n\nIf you want to know how the method works, follow the link\n" @@ -217,7 +217,7 @@ send_quoted_message: he: "הודעה זו נשלחה בשיטת *sendMessage*.\n\nה-SendMessage GREEN API - שיטת שלח טקסט מאפשרת לך לצטט הודעות; לשם כך עליך לציין את המזהה של ההודעה שיש לצטט בשדה quotedMessageId\n" es: "Este mensaje fue enviado a través del método *sendMessage*.\n\nEl método *sendMessage* le permite citar mensajes; para esto necesita especificar la identificación del mensaje que debe citarse en el campo quotedMessageId\n \nSi quieres saber cómo funciona el método, sigue el enlace\n" ar: "" - kz: "Бұл хабарлама *sendMessage* әдісі арқылы жіберілді.\n\nSendMessage әдісі хабарламаларға дәйексөз келтіруге мүмкіндік береді, ол үшін quotedMessageId өрісіне дәйексөзді қажет ететін хабарламаның идентификаторын(id) көрсету қажет\n\nӘдіс жұмысы туралы білу үшін сілтеме бойынша өтіңіз\n" + kz: "Бұл хабарлама *sendMessage* әдісі арқылы жіберілді.\n\n*SendMessage* әдісі хабарламаларға дәйексөз келтіруге мүмкіндік береді, ол үшін quotedMessageId өрісіне дәйексөзді қажет ететін хабарламаның идентификаторын(id) көрсету қажет\n\nӘдіс жұмысы туралы білу үшін сілтеме бойынша өтіңіз\n" about_python_chatbot: ru: "*PYTHON GREEN API чат-бот* предназначен для демонстрации возможностей WhatsApp API.\nКод GREEN API чат-бота открыт, на его основе Вы легко сможете написать своего бота." en: "*PYTHON GREEN API chatbot* is designed to demonstrate the capabilities of the WhatsApp API.\nThe code for the GREEN API chatbot is open source, and you can easily write your own bot on its basis." @@ -225,6 +225,90 @@ about_python_chatbot: es: "*PYTHON GREEN API chatbot* is designed to demonstrate the capabilities of the WhatsApp API.\nThe code for the GREEN API chatbot is open source, and you can easily write your own bot on its basis." ar: "" kz: "*PYTHON GREEN API чат-боты* WhatsApp API мүмкіндіктерін көрсетуге арналған.\nPYTHON GREEN API чат-боттың коды ашық, оның негізінде сіз өзіңіздің ботыңызды оңай жаза аласыз." +buttons_demo_message: + ru: "Это сообщение отправлено через *SendInteractiveButtons* метод.\nЧтобы узнать как работает метод, пройдите по ссылке\n" + en: "This message was sent via the *SendInteractiveButtons* method.\nIf you want to know how the method works, follow the link\n" + he: "הודעה זו נשלחה באמצעות השיטה *SendInteractiveButtons*.\nאם אתה רוצה לדעת איך השיטה עובדת, עקוב אחר הקישור\n" + es: "Este mensaje se envió mediante el método *SendInteractiveButtons*.\nSi quieres saber cómo funciona el método, sigue el enlace\n" + ar: "" + kz: "Бұл хабарлама *SendInteractiveButtons* әдісі арқылы жіберілді.\nдіс жұмысы туралы білу үшін сілтеме бойынша өтіңіз\n" +buttons_demo_title: + ru: "*Интерактивные кнопки*" + en: "*Interactive Buttons*" + he: "*כפתורים אינטראקטיביים*" + es: "*Botones interactivos*" + ar: "" + kz: "*Интерактивті түймелерді*" +buttons_demo_footer: + ru: "*Попробуйте нажать на кнопки ниже!*" + en: "*Try clicking the buttons below!*" + he: "*נסו ללחוץ על הכפתורים למטה!*" + es: "*¡Prueba a hacer clic en los botones de abajo!*" + ar: "" + kz: "*Төмендегі түймелерді басып көріңіз!*" +reply_buttons_title: + ru: "*Кнопки быстрого ответа*" + en: "*Quick reply buttons*" + he: "*כפתור תשובה מהירה*" + es: "*Botones de respuesta rápida*" + ar: "" + kz: "*Жылдам жауап беру түймелерді*" +reply_buttons_message: + ru: "Это сообщение отправлено через *SendInteractiveButtonsReply* метод.\nЧтобы узнать как работает метод, пройдите по ссылке\n" + en: "This message was sent via the *SendInteractiveButtonsReply* method.\nIf you want to know how the method works, follow the link\n" + he: "הודעה זו נשלחה באמצעות השיטה *SendInteractiveButtonsReply*.\nאם אתה רוצה לדעת איך השיטה עובדת, עקוב אחר הקישור\n" + es: "Este mensaje se envía mediante el método *SendInteractiveButtonsReply*.\nSi quieres saber cómo funciona el método, sigue el enlace\n" + ar: "" + kz: "Бұл хабарлама *SendInteractiveButtonsReply* әдісі арқылы жіберілді.\nдіс жұмысы туралы білу үшін сілтеме бойынша өтіңіз\n" +reply_buttons_footer: + ru: "*Выберите вариант ниже*" + en: "*Select an option below*" + he: "*אלו הם כפתורי תשובה לתגובות מהירות. בחר אפשרות למטה.*" + es: "*Seleccione una opción a continuación*" + ar: "" + kz: "*Төмендегі опцияны таңдаңыз*" +call_me_button: + ru: "Позвонить" + en: "Call me" + he: " שיחה אליי" + es: "Llamar" + ar: "" + kz: "Қоңырау шалу" +link_button: + ru: "Ссылка на документацию" + en: "Link to the documentation" + he: "קישור לתיעוד" + es: "Enlace a la documentación" + ar: "" + kz: "Документацияға сілтеме" +menu_button: + ru: "Меню" + en: "Menu" + he: "תפריט" + es: "Menú" + ar: "" + kz: "Мәзір" +stop_button: + ru: "Стоп" + en: "Stop" + he: "עצור" + es: "Parar" + ar: "" + kz: "Тоқта" +sending_buttons_notice: + ru: "Следующие сообщения будут отправлены с использованием методов *SendInteractiveButtons* и *SendInteractiveButtonsReplay*.\nМы будем отправлять интерактивные кнопки и интерактивные кнопки с ответом!\n\n" + en: "The following messages will be sent using the *SendInteractiveButtons* and *SendInteractiveButtonsReplay* methods.\nWe will send interactive buttons and interactive buttons with a reply in them!\n\n" + he: "ההודעות הבאות יישלחו באמצעות השיטות *SendInteractiveButtons* ו-*SendInteractiveButtonsReplay*.\nנשלח כפתורים אינטראקטיביים וכפתורים אינטראקטיביים עם תשובה בתוכם!\n\n" + es: "Los siguientes mensajes se enviarán mediante los métodos *SendInteractiveButtons* y *SendInteractiveButtonsReplay*.\n¡Enviaremos botones interactivos y botones interactivos con una respuesta!\n\n" + ar: "" + kz: "Келесі хабарламалар *SendInteractiveButtons* және *SendInteractiveButtonsReplay* әдістері арқылы жіберіледі.\nБіз интерактивті түймелер мен жауаптары бар интерактивті түймелерді жібереміз!\n\n" +buttons_warning: + ru: "⚠️ Обратите внимание: \nКнопки поддерживаются не во всех версиях приложения. Они будут видны в мобильной и веб-версиях, но *не отображаются в Windows Desktop*.\n" + en: "⚠️ Please note: \nButtons are not supported in all app versions. They will be visible in the mobile and web apps, but *are not displayed in the Windows Desktop* version.\n" + he: "⚠️ שימו לב:\n הכפתורים אינם נתמכים בכל גרסאות האפליקציה. הם יהיו גלויים באפליקציית המובייל והדפדפן, אך *לא מוצגים בגרסת Windows Desktop*.\n" + es: "⚠️ Ten en cuenta: \nLos botones no son compatibles con todas las versiones de la aplicación. Serán visibles en las aplicaciones móviles y web, pero *no se muestran en la versión de Windows Desktop*.\n" + ar: "" + kz: "⚠️ Назар аударыңыз: \nТүймелердің барлық қолданба нұсқаларында қолдауы жоқ. Олар мобильді және веб-қолданбаларда көрінеді, бірақ *Windows Desktop нұсқасында көрсетілмейді*.\n" link_to_docs: ru: "\n\n🔗 Ссылка на документацию\n" en: "\n\n🔗 Link to the documentation\n" @@ -281,6 +365,20 @@ chat_gpt_error: es: "Lo siento, hubo un error al procesar tu mensaje. Por favor, inténtalo de nuevo o vuelve al menú escribiendo *menu*." ar: "" kz: "Кешіріңіз, сіздің хабарламаңызды өңдеу кезінде қате орын алды. Қайталап көріңіз немесе *меню* деп жазу арқылы мәзірге оралыңыз." +menu_button_text: + ru: "меню" + en: "menu" + he: "תפריט" + es: "menú" + ar: "" + kz: "мәзір" +stop_button_text: + ru: "стоп" + en: "stop" + he: "עצור" + es: "parar" + ar: "" + kz: "тоқта" links: ru: send_text_documentation: "https://green-api.com/docs/api/sending/SendMessage/" @@ -295,6 +393,8 @@ links: groups_documentation: "https://green-api.com/docs/api/groups/" send_quoted_message_documentation: "https://green-api.com/docs/api/sending/SendMessage/" send_poll_as_buttons: "https://green-api.com/docs/faq/how-to-use-polls-as-buttons/" + send_interactive_buttons_documentation: "https://green-api.com/docs/api/sending/SendInteractiveButtons/" + send_interactive_buttons_reply_documentation: "https://green-api.com/docs/api/sending/SendInteractiveButtonsReply/" chatbot_documentation: "https://green-api.com/docs/chatbots/python/chatbot-demo/" chatbot_source_code: "https://github.com/green-api/whatsapp-demo-chatbot-python" greenapi_website: "https://green-api.com/" @@ -313,6 +413,8 @@ links: groups_documentation: "https://green-api.com/en/docs/api/groups/" send_quoted_message_documentation: "https://green-api.com/en/docs/api/sending/SendMessage/" send_poll_as_buttons: "https://green-api.com/en/docs/faq/how-to-use-polls-as-buttons/" + send_interactive_buttons_documentation: "https://green-api.com/en/docs/api/sending/SendInteractiveButtons/" + send_interactive_buttons_reply_documentation: "https://green-api.com/en/docs/api/sending/SendInteractiveButtonsReply/" chatbot_documentation: "https://green-api.com/en/docs/chatbots/python/chatbot-demo/" chatbot_source_code: "https://github.com/green-api/whatsapp-demo-chatbot-python" greenapi_website: "https://green-api.com/en/" @@ -331,6 +433,8 @@ links: groups_documentation: "https://green-api.org.il/en/docs/api/groups/" send_quoted_message_documentation: "https://green-api.org.il/en/docs/api/sending/SendMessage/" send_poll_as_buttons: "https://green-api.org.il/en/docs/faq/how-to-use-polls-as-buttons/" + send_interactive_buttons_documentation: "https://green-api.com/en/docs/api/sending/SendInteractiveButtons/" + send_interactive_buttons_reply_documentation: "https://green-api.com/en/docs/api/sending/SendInteractiveButtonsReply/" chatbot_documentation: "https://green-api.com/en/docs/chatbots/python/chatbot-demo/" chatbot_source_code: "https://github.com/green-api/whatsapp-demo-chatbot-python" greenapi_website: "https://green-api.com/en/" @@ -349,6 +453,8 @@ links: groups_documentation: "https://green-api.com/en/docs/api/groups/" send_quoted_message_documentation: "https://green-api.com/en/docs/api/sending/SendMessage/" send_poll_as_buttons: "https://green-api.com/en/docs/faq/how-to-use-polls-as-buttons/" + send_interactive_buttons_documentation: "https://green-api.com/en/docs/api/sending/SendInteractiveButtons/" + send_interactive_buttons_reply_documentation: "https://green-api.com/en/docs/api/sending/SendInteractiveButtonsReply/" chatbot_documentation: "https://green-api.com/en/docs/chatbots/python/chatbot-demo/" chatbot_source_code: "https://github.com/green-api/whatsapp-demo-chatbot-python" greenapi_website: "https://green-api.com/en/" @@ -367,6 +473,8 @@ links: groups_documentation: "https://green-api.com/en/docs/api/groups/" send_quoted_message_documentation: "https://green-api.com/en/docs/api/sending/SendMessage/" send_poll_as_buttons: "https://green-api.com/en/docs/faq/how-to-use-polls-as-buttons/" + send_interactive_buttons_documentation: "https://green-api.com/en/docs/api/sending/SendInteractiveButtons/" + send_interactive_buttons_reply_documentation: "https://green-api.com/en/docs/api/sending/SendInteractiveButtonsReply/" chatbot_documentation: "https://green-api.com/en/docs/chatbots/python/chatbot-demo/" chatbot_source_code: "https://github.com/green-api/whatsapp-demo-chatbot-python" greenapi_website: "https://green-api.com/en/" @@ -385,8 +493,10 @@ links: groups_documentation: "https://green-api.com.kz/docs/api/groups/" send_quoted_message_documentation: "https://green-api.com.kz/docs/api/sending/SendMessage/" send_poll_as_buttons: "https://green-api.com.kz/docs/faq/how-to-use-polls-as-buttons/" + send_interactive_buttons_documentation: "https://green-api.com.kz/docs/api/sending/SendInteractiveButtons/" + send_interactive_buttons_reply_documentation: "https://green-api.com.kz/docs/api/sending/SendInteractiveButtonsReply/" chatbot_documentation: "https://green-api.com.kz/docs/chatbots/python/chatbot-demo/" chatbot_source_code: "https://github.com/green-api/whatsapp-demo-chatbot-python" greenapi_website: "https://green-api.com/en/" greenapi_console: "https://console.green-api.com/" - youtube_channel: "https://www.youtube.com/@green-api" + youtube_channel: "https://www.youtube.com/@green-api" \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 03ebf35..9f52db1 100644 Binary files a/requirements.txt and b/requirements.txt differ