summaryrefslogtreecommitdiff
path: root/lib/plugins/wikipedia.ex
diff options
context:
space:
mode:
authorJordan Bracco <href@random.sh>2025-06-25 19:22:59 +0200
committerJordan Bracco <href@random.sh>2025-06-25 19:22:59 +0200
commitc934e79e5852e05f714b2d542cc2678e287c49b8 (patch)
tree55779a0168260fce03e4775eacdd613ffc945588 /lib/plugins/wikipedia.ex
parentupdates (diff)
format.
Diffstat (limited to 'lib/plugins/wikipedia.ex')
-rw-r--r--lib/plugins/wikipedia.ex40
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