File: mod_example.ex

package info (click to toggle)
ejabberd 24.12-4
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 12,740 kB
  • sloc: erlang: 111,927; sh: 4,004; sql: 3,551; perl: 832; makefile: 542; python: 48; javascript: 34
file content (46 lines) | stat: -rw-r--r-- 967 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
defmodule Ejabberd.Module.Example do

  @moduledoc """
  Example ejabberd module written in Elixir.

  This is an example to demonstrate the usage of Elixir to
  create ejabberd modules.

  Example configuration:
      modules:
        'Ejabberd.Module.Example': {}
  """

  @behaviour :gen_mod
  import Ejabberd.Logger

  def start(host, _opts) do
    info("Starting Ejabberd.Module.Example for host '#{host}'")
    Ejabberd.Hooks.add(:set_presence_hook, host, __MODULE__, :on_presence, 50)
    :ok
  end

  def stop(host) do
    info("Stopping Ejabberd.Module.Example for host '#{host}'")
    Ejabberd.Hooks.delete(:set_presence_hook, host, __MODULE__, :on_presence, 50)
    :ok
  end

  def on_presence(user, _server, _resource, _packet) do
    info("Receive presence for #{user}")
    :none
  end

  def depends(_host, _opts) do
    []
  end

  def mod_options(_host) do
    []
  end

  def mod_doc() do
    %{:desc => "This is just a demonstration."}
  end

end