Перейти к содержанию

Как фильтровать входящие сообщения#

Установка#

Установка:

python -m pip install whatsapp-chatbot-python

Импорт#

from whatsapp_chatbot_python import GreenAPIBot, Notification

Примеры#

Как инициализировать объект#

bot = GreenAPIBot(
    "1101000001", "d75b3a66374942c5b3c019c698abc2067e151558acbd412345"
)

Как фильтровать входящие сообщения#

Сообщения можно фильтровать по чату, по отправителю, по типу и тексту сообщения. Для фильтров чата, отправителя и типа сообщения можно использовать строку (str) или список из строк (list[str]). Текст сообщения можно фильтровать по тексту, по команде и регулярным выражениям. Ниже таблица с названиями фильтров и возможными значениями.

Название фильтра Описание Возможные значения
from_chat Чат или чаты от которых нужно получать сообщения "11001234567@c.us" или ["11001234567@c.us", "11002345678@c.us"]
from_sender Отправитель или отправители от которых нужно получать сообщения "11001234567@c.us" или ["11001234567@c.us", "11002345678@c.us"]
type_message Тип или типы сообщения, которые нужно обрабатывать "textMessage" или ["textMessage", "extendedTextMessage"]
text_message Ваша функция будет выполнена если текст полностью соответствует тексту "Привет. Мне нужна помощь"
regexp Ваша функция будет выполнена если текст полностью соответствует шаблону регулярного выражения r"Привет. Мне нужна помощь"
command Ваша функция будет выполнена если префикс и команда полностью соответствуем вашим значениям "help" или ("help", "!/")

Как добавить фильтры через декоратор#

@bot.router.message(command="command")

Как добавить фильтры с помощью функции#

bot.router.message.add_handler(handler, command="command")

Как фильтровать сообщения по чату, отправителю или типу сообщения#

Чтобы фильтровать сообщения по чату, отправителю или типу сообщения, нужно добавить строку (str) или список из строк (list[str]).

from_chat = "11001234567@c.us"
from_sender = "11001234567@c.us"
type_message = ["textMessage", "extendedTextMessage"]

Как фильтровать сообщения по тексту сообщения или регулярным выражениям#

Чтобы фильтровать сообщения по тексту сообщения, регулярным выражениям или команде, нужно добавить строку (str).

text_message = "Привет. Мне нужна помощь"
regexp = r"Привет. Мне нужна помощь"

Как фильтровать сообщения по команде#

Чтобы фильтровать сообщения по команде, нужно добавить строку (str) или кортеж (tuple). Вам нужно указать либо название команды, либо название команды и строку префиксов. Префикс по умолчанию: /.

command = "help"
command = ("help", "!/")

Пример#

Ссылка на пример: filters.py.

@bot.router.message(command="help")
def message_handler(notification: Notification) -> None:
    notification.answer_with_file(file="help.png")


bot.run_forever()

Запуск приложения#

python filters.py

Список примеров#

Описание Ссылка на пример
Как начать получать сообщения и отвечать на них base.py
Как получать другие уведомления и обрабатывать тело уведомления event.py
Как фильтровать входящие сообщения filters.py
Как обрабатывать кнопки buttons.py
Пример бота full.py
GREEN-API демо чатбот bot.py