mirror of
https://github.com/TheRealOwenRees/plantid-discord-bot.git
synced 2026-07-22 20:16:57 +00:00
update deps to pull from hex
This commit is contained in:
+2
-2
@@ -7,6 +7,6 @@ config :plantid_discord_bot,
|
||||
config :plantid_discord_bot, :environment, :prod
|
||||
|
||||
config :logger,
|
||||
backends: [{PlantIdDiscordBot.DiscordLogger, :discord_logger}]
|
||||
backends: [{LoggerWebhookBackend, :webhook_logger}]
|
||||
|
||||
config :logger, :discord_logger, level: :error
|
||||
config :logger, :webhook_logger, level: :error
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ config :plantid_discord_bot,
|
||||
config :nostrum,
|
||||
token: System.get_env("PLANTID_DISCORD_BOT_TOKEN")
|
||||
|
||||
config :logger, :discord_logger,
|
||||
config :logger, :webhook_logger,
|
||||
webhook_url: System.get_env("PLANTID_LOGS_DISCORD_WEBHOOK_URL"),
|
||||
level: :error,
|
||||
bot_token: System.get_env("PLANTID_DISCORD_BOT_TOKEN")
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
defmodule PlantIdDiscordBot.DiscordLogger do
|
||||
require Logger
|
||||
|
||||
@behaviour :gen_event
|
||||
|
||||
def init({__MODULE__, name}) do
|
||||
{:ok, configure(name, [])}
|
||||
end
|
||||
|
||||
def handle_call({:configure, opts}, %{name: name} = state) do
|
||||
{:ok, :ok, configure(name, opts, state)}
|
||||
end
|
||||
|
||||
def handle_event({_level, gl, {Logger, _, _, _}}, state) when node(gl) != node() do
|
||||
{:ok, state}
|
||||
end
|
||||
|
||||
def handle_event({level, _gl, {Logger, msg, ts, md}}, %{} = state) do
|
||||
if is_level_okay(level, state.level) do
|
||||
log_to_discord(state.webhook_url, level, msg, ts, md)
|
||||
end
|
||||
|
||||
{:ok, state}
|
||||
end
|
||||
|
||||
def handle_event(:flush, state) do
|
||||
{:ok, state}
|
||||
end
|
||||
|
||||
def handle_info(_, state) do
|
||||
{:ok, state}
|
||||
end
|
||||
|
||||
defp is_level_okay(lvl, min_level) do
|
||||
is_nil(min_level) or Logger.compare_levels(lvl, min_level) != :lt
|
||||
end
|
||||
|
||||
def log_to_discord(webhook_url, level, msg, ts, md) do
|
||||
formatted_msg = format_message(level, msg, ts, md)
|
||||
body = %{content: formatted_msg} |> Jason.encode!()
|
||||
headers = [{~c"Content-Type", ~c"application/json"}]
|
||||
|
||||
:httpc.request(
|
||||
:post,
|
||||
{webhook_url, headers, ~c"application/json", body},
|
||||
[],
|
||||
[]
|
||||
)
|
||||
|> case do
|
||||
{:ok, {{~c"HTTP/1.1", status, _}, _headers, _body}} when status in 200..299 ->
|
||||
:ok
|
||||
|
||||
{:ok, {{~c"HTTP/1.1", status, _}, _headers, response_body}} ->
|
||||
Logger.error(
|
||||
"Failed to send log to Discord: Status #{status}, Body: #{inspect(response_body)}"
|
||||
)
|
||||
|
||||
{:error, reason} ->
|
||||
Logger.error("Error sending log to Discord: #{inspect(reason)}")
|
||||
end
|
||||
end
|
||||
|
||||
def format_message(level, msg, _ts, md) do
|
||||
timestamp = DateTime.utc_now()
|
||||
source = md[:application]
|
||||
msg = IO.iodata_to_binary(msg) |> String.slice(0..1900)
|
||||
|
||||
"[#{timestamp}] [#{source}] [#{level}] `#{msg}`"
|
||||
end
|
||||
|
||||
defp configure(name, opts) do
|
||||
state = %{name: name, format: nil, level: nil, metadata: nil, metadata_filter: nil}
|
||||
configure(name, opts, state)
|
||||
end
|
||||
|
||||
defp configure(name, opts, state) do
|
||||
env = Application.get_env(:logger, name, [])
|
||||
opts = Keyword.merge(env, opts)
|
||||
Application.put_env(:logger, name, opts)
|
||||
|
||||
new_state = %{
|
||||
webhook_url: Keyword.get(opts, :webhook_url, nil),
|
||||
level: Keyword.get(opts, :level)
|
||||
}
|
||||
|
||||
Map.merge(state, new_state)
|
||||
end
|
||||
end
|
||||
@@ -4,7 +4,7 @@ defmodule PlantidDiscordBot.MixProject do
|
||||
def project do
|
||||
[
|
||||
app: :plantid_discord_bot,
|
||||
version: "0.1.0",
|
||||
version: "0.1.1",
|
||||
elixir: "~> 1.16",
|
||||
start_permanent: Mix.env() == :prod,
|
||||
deps: deps()
|
||||
@@ -29,6 +29,8 @@ defmodule PlantidDiscordBot.MixProject do
|
||||
{:httpoison, "~> 2.2"},
|
||||
{:image, "~> 0.55"},
|
||||
{:jason, "~> 1.4"},
|
||||
{:logger_webhook_backend, "~> 0.0.2"},
|
||||
{:plug, "~> 1.12"},
|
||||
{:plug_cowboy, "~> 2.7"},
|
||||
{:quantum, "~> 3.5"}
|
||||
]
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
|
||||
"image": {:hex, :image, "0.55.2", "f21b5341ee05dfe2e0f649c34c6335cbce44be55e3ce3ced404ac008bef6c335", [:mix], [{:bumblebee, "~> 0.3", [hex: :bumblebee, repo: "hexpm", optional: true]}, {:evision, "~> 0.1.33 or ~> 0.2", [hex: :evision, repo: "hexpm", optional: true]}, {:exla, "~> 0.5", [hex: :exla, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}, {:kino, "~> 0.13", [hex: :kino, repo: "hexpm", optional: true]}, {:nx, "~> 0.7", [hex: :nx, repo: "hexpm", optional: true]}, {:nx_image, "~> 0.1", [hex: :nx_image, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 2.1 or ~> 3.2 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.13", [hex: :plug, repo: "hexpm", optional: true]}, {:req, "~> 0.4", [hex: :req, repo: "hexpm", optional: true]}, {:rustler, "> 0.0.0", [hex: :rustler, repo: "hexpm", optional: true]}, {:scholar, "~> 0.3", [hex: :scholar, repo: "hexpm", optional: true]}, {:sweet_xml, "~> 0.7", [hex: :sweet_xml, repo: "hexpm", optional: false]}, {:vix, "~> 0.23", [hex: :vix, repo: "hexpm", optional: false]}], "hexpm", "aa126e45b514810d1af89eded505ed3e523acefbb005f6220f8fbc1955904607"},
|
||||
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
|
||||
"logger_webhook_backend": {:hex, :logger_webhook_backend, "0.0.2", "9bca14b3c184b1a11b1ef7b49954a8eb8b3bf993cad2436db0f0374962c8d33d", [:mix], [{:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "94c693c6ee4aa3c6c5b8d89f32495646b88ca943478ad56b997b497a68efd316"},
|
||||
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"},
|
||||
"mime": {:hex, :mime, "2.0.6", "8f18486773d9b15f95f4f4f1e39b710045fa1de891fada4516559967276e4dc2", [:mix], [], "hexpm", "c9945363a6b26d747389aac3643f8e0e09d30499a138ad64fe8fd1d13d9b153e"},
|
||||
"mimerl": {:hex, :mimerl, "1.3.0", "d0cd9fc04b9061f82490f6581e0128379830e78535e017f7780f37fea7545726", [:rebar3], [], "hexpm", "a1e15a50d1887217de95f0b9b0793e32853f7c258a5cd227650889b38839fe9d"},
|
||||
|
||||
Reference in New Issue
Block a user