summaryrefslogtreecommitdiff
path: root/lib/nola_plugins/dice_plugin.ex
diff options
context:
space:
mode:
authorJordan Bracco <href@random.sh>2022-12-20 02:13:47 +0000
committerJordan Bracco <href@random.sh>2022-12-20 19:29:41 +0100
commit70b9bba56f5319361ce5a7df5c489b9c0d6905ce (patch)
treef9b4438965f4c5e3e1f3a6129904cbb9a37047f2 /lib/nola_plugins/dice_plugin.ex
parentUpdate repo URL, refs T77. (diff)
Rename to Nola
Summary: Nola rename cont. pt. 2. Refs T77. `find lib -name "*.ex" -type f | xargs sed -i '' 's/LSG/Nola/g'` Nola rename, cont. pt. 3. Refs T77. `s/:lsg/:nola/g` Nola rename, cont. pt. 4. Refs T77. Nola rename, cont. pt. 5. Refs T77. Configs. find config -type f | xargs sed -i '' 's/LSG/Nola/g' find config -type f | xargs sed -i '' 's/lsg/nola/g' BREAKING CHANGE: Config keys switch from `:lsg` to `:nola` Nola rename, the end. pt 6. Refs T77. Nola rename: The Big Move, Refs T77 Update repo URL, refs T77. Nola rename: Nola.Plugins, refs T77 Maniphest Tasks: T77 Differential Revision: https://phab.random.sh/D3
Diffstat (limited to 'lib/nola_plugins/dice_plugin.ex')
-rw-r--r--lib/nola_plugins/dice_plugin.ex66
1 files changed, 0 insertions, 66 deletions
diff --git a/lib/nola_plugins/dice_plugin.ex b/lib/nola_plugins/dice_plugin.ex
deleted file mode 100644
index b5e7649..0000000
--- a/lib/nola_plugins/dice_plugin.ex
+++ /dev/null
@@ -1,66 +0,0 @@
-defmodule Nola.IRC.DicePlugin do
- require Logger
-
- @moduledoc """
- # dice
-
- * **!dice `[1 | lancés]` `[6 | faces]`**: lance une ou plusieurs fois un dé de 6 ou autre faces
- """
-
- @default_faces 6
- @default_rolls 1
- @max_rolls 50
-
- def short_irc_doc, do: "!dice (jeter un dé)"
- defstruct client: nil, dets: nil
-
- def irc_doc, do: @moduledoc
-
- def start_link() do
- GenServer.start_link(__MODULE__, [], name: __MODULE__)
- end
-
- def init([]) do
- {:ok, _} = Registry.register(IRC.PubSub, "trigger:dice", [plugin: __MODULE__])
- {:ok, %__MODULE__{}}
- end
-
- def handle_info({:irc, :trigger, _, message = %{trigger: %{type: :bang, args: args}}}, state) do
- to_integer = fn(string, default) ->
- case Integer.parse(string) do
- {int, _} -> int
- _ -> default
- end
- end
-
- {rolls, faces} = case args do
- [] -> {@default_rolls, @default_faces}
- [faces, rolls] -> {to_integer.(rolls, @default_rolls), to_integer.(faces, @default_faces)}
- [rolls] -> {to_integer.(rolls, @default_rolls), @default_faces}
- end
-
- roll(state, message, faces, rolls)
-
- {:noreply, state}
- end
-
- def handle_info(info, state) do
- {:noreply, state}
- end
-
- defp roll(state, message, faces, 1) when faces > 0 do
- random = :crypto.rand_uniform(1, faces+1)
- message.replyfun.("#{message.sender.nick} dice: #{random}")
- end
- defp roll(state, message, faces, rolls) when faces > 0 and rolls > 0 and rolls <= @max_rolls do
- {results, acc} = Enum.map_reduce(Range.new(1, rolls), 0, fn(i, acc) ->
- random = :crypto.rand_uniform(1, faces+1)
- {random, acc + random}
- end)
- results = Enum.join(results, "; ")
- message.replyfun.("#{message.sender.nick} dice: [#{acc}] #{results}")
- end
-
- defp roll(_, _, _, _, _), do: nil
-
-end