Created
February 24, 2016 09:17
-
-
Save dmitriid/65871cbd7f632516789f to your computer and use it in GitHub Desktop.
A bright and glorious vision of da future!
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Plugins | |
# | |
# Плагину достаточно выставить наружу command, принимающую context | |
# | |
# Где context — это | |
# %{ :scope => :jabber, # или там :slack или там :icq | |
# :from => ..., | |
# :to => ..., | |
# :room => ... | |
# } | |
# | |
# Плагин реагирует на команды через match и respond: | |
# match r/.../, do | |
# что-то делаем | |
# respond "что-то там" | |
# end | |
# | |
# respond "что-то там" эквивалентно respond("что-то-там", context) | |
# из context Erobot вытянет что куда зачем отвечать (коннкшн, комнату и т.п.) | |
# | |
# чтобы реагировать на команды только в жабере, например, или только в irc | |
# match'и можно привязать к определенному scope'у | |
# | |
# scope :jabber do | |
# match r/.../, do | |
# что-то делаем | |
# respond "что-то там" | |
# end | |
# end | |
# | |
# TODO: как среагировать на команду в одном скоупе, а respond в другой? | |
defmodule Erobot.SomePlugin do | |
require Erobot.Plugin | |
def command(context) do | |
scope :slack, do | |
match r/siskipiski/ do | |
respond "NSFW!" | |
end | |
match r/piskisiski/ do | |
respond "!WFSN" | |
end | |
end | |
scope :jabber do | |
... | |
end | |
end | |
end | |
# | |
# Scopes | |
# | |
# Scope — это сущность, отвечающая за связь (с жабером, слаком и т.п.) | |
# | |
# Выставить наружу connect, respond, provides | |
# | |
# - connect вызывается при запуске, чтобы установить соединение | |
# - respond вызывается, когда какой-либо плагин вызывает respond с этим scope'ом | |
# - provides выставляет наружу атом-название скоупа | |
# | |
defmodule Erobot.XMPPScope do | |
require Erobot.Scope | |
provides :jabber | |
def connect() do | |
# читаем конфиг | |
# присоединяемся | |
# при получении сообщения вызываем | |
# Erobot.message(context) | |
# где context описан вверху | |
end | |
def respond(message) do | |
# отсылаем сообщение | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment