Skip to content

Instantly share code, notes, and snippets.

@evjeny
Created August 22, 2021 19:00
Show Gist options
  • Save evjeny/dfafdce3d39475c1c194501f03d11ed8 to your computer and use it in GitHub Desktop.
Save evjeny/dfafdce3d39475c1c194501f03d11ed8 to your computer and use it in GitHub Desktop.
Пример модуля для модульной структуры бота
# весь бот состоит из модулей
module:
# у модуля есть название
name: "Perimetry"
# входная точка
entry_point:
type: "text"
pattern: "Perimetry"
# какие-то действия, которые выполняются
# после прохождения входной точки
actions:
# действия -- это последовательность.
# последовательность может состоять из:
# * условий
# * вызовов api
# (api -- какие-то зарадкоженные возможности бота)
# действием может быть вызов api
- api:
# вызов api имеет название метода
method: "telegram.show_keyboard"
# и именованные параметры.
# параметрами могут быть:
# * числа
# * строки
# * actions
rows:
- row:
- button:
text: "Do research"
- row:
- button:
text: "Make money!"
actions:
- api:
method: "telegram.ban_user"
user:
api:
method: "utils.get_user_from_message"
message: "$message"
# действием может быть условие
- condition:
# в условии могут быть блоки if, else и
# несколько блоков elif
# метод if условия
- if:
# условие содержит утверждение
# по сути это action, возвращающий boolean
statement:
# утверждением может быть вызов api
api:
method: 'utils.text_contains'
text:
api:
method: "utils.get_text"
message: "$message"
pattern: "research"
# у условий есть последовательность действий
# которая выполняется при удовлетворении условий
actions:
- api:
method: "telegram.send_message"
text: "sorry, we can't afford you a research..."
# метод else условия
- else:
actions:
- api:
method: "telegram.send_message"
text: "OKE!"
# последним действией в модуле может быть переход к другому модулю
- api:
method: "next_module"
module_name: "main_module"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment