diff options
author | Jordan Bracco <href@random.sh> | 2025-06-25 19:22:59 +0200 |
---|---|---|
committer | Jordan Bracco <href@random.sh> | 2025-06-25 19:22:59 +0200 |
commit | c934e79e5852e05f714b2d542cc2678e287c49b8 (patch) | |
tree | 55779a0168260fce03e4775eacdd613ffc945588 /lib/plugins/wikipedia.ex | |
parent | updates (diff) |
format.
Diffstat (limited to 'lib/plugins/wikipedia.ex')
-rw-r--r-- | lib/plugins/wikipedia.ex | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/lib/plugins/wikipedia.ex b/lib/plugins/wikipedia.ex index 47b14da..0bcbee7 100644 --- a/lib/plugins/wikipedia.ex +++ b/lib/plugins/wikipedia.ex @@ -15,15 +15,24 @@ defmodule Nola.Plugins.Wikipedia do end def init(_) do - {:ok, _} = Registry.register(Nola.PubSub, "trigger:wp", [plugin: __MODULE__]) + {:ok, _} = Registry.register(Nola.PubSub, "trigger:wp", plugin: __MODULE__) {:ok, nil} end - def handle_info({:irc, :trigger, _, message = %Nola.Message{trigger: %Nola.Trigger{type: :bang, args: []}}}, state) do + def handle_info( + {:irc, :trigger, _, + message = %Nola.Message{trigger: %Nola.Trigger{type: :bang, args: []}}}, + state + ) do irc_random(message) {:noreply, state} end - def handle_info({:irc, :trigger, _, message = %Nola.Message{trigger: %Nola.Trigger{type: :bang, args: args}}}, state) do + + def handle_info( + {:irc, :trigger, _, + message = %Nola.Message{trigger: %Nola.Trigger{type: :bang, args: args}}}, + state + ) do irc_search(Enum.join(args, " "), message) {:noreply, state} end @@ -33,19 +42,22 @@ defmodule Nola.Plugins.Wikipedia do end defp irc_search("", message), do: irc_random(message) + defp irc_search(query, message) do params = %{ "action" => "query", "list" => "search", "srsearch" => String.strip(query), - "srlimit" => 1, + "srlimit" => 1 } + case query_wikipedia(params) do {:ok, %{"query" => %{"search" => [item | _]}}} -> title = item["title"] url = "https://fr.wikipedia.org/wiki/" <> String.replace(title, " ", "_") msg = "Wikipédia: #{title} — #{url}" message.replyfun.(msg) + _ -> nil end @@ -58,6 +70,7 @@ defmodule Nola.Plugins.Wikipedia do "grnnamespace" => 0, "prop" => "info" } + case query_wikipedia(params) do {:ok, %{"query" => %{"pages" => map = %{}}}} -> [{_, item}] = Map.to_list(map) @@ -65,6 +78,7 @@ defmodule Nola.Plugins.Wikipedia do url = "https://fr.wikipedia.org/wiki/" <> String.replace(title, " ", "_") msg = "Wikipédia: #{title} — #{url}" message.replyfun.(msg) + _ -> nil end @@ -72,19 +86,23 @@ defmodule Nola.Plugins.Wikipedia do defp query_wikipedia(params) do url = "https://fr.wikipedia.org/w/api.php" - params = params - |> Map.put("format", "json") - |> Map.put("utf8", "") + + params = + params + |> Map.put("format", "json") + |> Map.put("utf8", "") case HTTPoison.get(url, [], params: params) do - {:ok, %HTTPoison.Response{status_code: 200, body: body}} -> Jason.decode(body) + {:ok, %HTTPoison.Response{status_code: 200, body: body}} -> + Jason.decode(body) + {:ok, %HTTPoison.Response{status_code: 400, body: body}} -> - Logger.error "Wikipedia HTTP 400: #{inspect body}" + Logger.error("Wikipedia HTTP 400: #{inspect(body)}") {:error, "http 400"} + error -> - Logger.error "Wikipedia http error: #{inspect error}" + Logger.error("Wikipedia http error: #{inspect(error)}") {:error, "http client error"} end end - end |