Вы можете написать свой собственный код и собрать его с плагином с поведением gen_mod, которое дает вам ejabberd.
Хорошее место для начала - это блог / учебник и следуйте до следующая часть .
Этого должно быть достаточно, но вы найдете больше в том же блоге.
После того, как вы освоитесь с созданием собственного модуля, я предлагаю вам взглянуть на хуки set_presence_hook и unset_presence_hook
Просто обратите внимание, что set_presence_hook активируется каждый раз, когда устанавливается присутствие, не только при входе в систему, вам просто нужно обойти это, если можете.
Короче говоря, у вас получится что-то вроде следующего
-module(mod_your_mod).
-behavior(gen_mod).
-include("ejabberd.hrl").
-export([start/2, stop/1, on_set/4, on_unset/4]).
start(Host, _Opts) ->
ejabberd_hooks:add(set_presence_hook, Host, ?MODULE, on_set, 50),
ejabberd_hooks:add(unset_presence_hook, Host, ?MODULE, on_unset, 50),
ok.
stop(Host) ->
ejabberd_hooks:delete(set_presence_hook, Host, ?MODULE, on_set, 50),
ejabberd_hooks:delete(unset_presence_hook, Host, ?MODULE, on_unset, 50),
ok.
on_set(User, Server, _Resource, _Packet) ->
<presence code>
on_unset(User, Server, _Resource, _Packet) ->
<offline code>
Надеюсь, эта помощь