Feat/error logs (#16)

* added list of tasks to achieve

* update deps

* update elixir version in CI/CD pipeline

* update todo with branch push checks

* underscores separation of large numbers

* update elixir version and deps

* add basic module  docs

* remove IO.inspect call

* check if list is empty rather than traversing list for length

* revert empty list code

* duration tests

* add mime type tests

* use logger instread of inspect, remove todos

* replace list length check with Enum.empty

* replace list length check with !Enum.empty?

* numbers readability fix by using underscores on large numbers

* iucn parser replaced case with multiclause function and added test

* replace map and join with map_join

* fix multiple spec issues where map() must be inside a list
This commit is contained in:
2025-12-06 23:41:59 +01:00
committed by GitHub
parent 3d3059e77f
commit 02372f2076
27 changed files with 241 additions and 45 deletions
+5
View File
@@ -1,4 +1,9 @@
defmodule PlantIdDiscordBot.Cog.Info do
@moduledoc """
Functions for using the /info application command.
Returns a message embed of application commands available to the user.
"""
use Nostrum.Consumer
import Nostrum.Struct.Embed
alias PlantIdDiscordBot.Utils
@@ -1,4 +1,7 @@
defmodule PlantIdDiscordBot.Cog.PlantNetMessage do
@moduledoc """
Functions for sending and receiving data from PLantNet
"""
require Logger
use Nostrum.Consumer
@@ -49,7 +52,6 @@ defmodule PlantIdDiscordBot.Cog.PlantNetMessage do
nil
end
# TODO improve composition
if saved_images do
try do
prepare_images(saved_images)
+3
View File
@@ -1,4 +1,7 @@
defmodule PlantIdDiscordBot.FileServer do
@moduledoc """
File server for temporary storage of images until a response is made.
"""
use Plug.Builder
plug(Plug.Logger)
+3 -3
View File
@@ -2,6 +2,8 @@ defmodule PlantIdDiscordBot.FileServer.File do
@moduledoc """
File utilities
"""
require Logger
alias PlantIdDiscordBot.FileServer.ImageConverter
@image_path Application.compile_env(:plantid_discord_bot, :image_path)
@@ -56,7 +58,6 @@ defmodule PlantIdDiscordBot.FileServer.File do
|> File.read()
end
# TODO make into a task for async deletion and deal with errors
@spec delete_files!([String.t()]) :: :ok
def delete_files!(filenames) do
tasks =
@@ -65,8 +66,7 @@ defmodule PlantIdDiscordBot.FileServer.File do
try do
File.rm!(Path.join(@image_path, filename))
rescue
# TODO Logger
e -> IO.inspect(e)
e -> Logger.error(e)
end
end)
end)
+3
View File
@@ -1,4 +1,7 @@
defmodule PlantIdDiscordBot.Guild do
@moduledoc """
Guild related functions.
"""
alias Nostrum.Cache.GuildCache
def get_guild_name!(guild_id) do
@@ -1,4 +1,7 @@
defmodule PlantIdDiscordBot.ProcessRegistry do
@moduledoc """
Process registry.
"""
def start_link do
Registry.start_link(keys: :unique, name: __MODULE__)
end
+6
View File
@@ -1,4 +1,10 @@
defmodule PlantIdDiscordBot.RateLimiter do
@moduledoc """
Basic rate limiter to prevent one guild from calling too many requests in 24 hours.
Custom limits have been set for some guilds that are trusted.
"""
use GenServer
require Logger
+3
View File
@@ -1,4 +1,7 @@
defmodule PlantIdDiscordBot.Utils do
@moduledoc """
Bot related utility functions.
"""
def get_uptime() do
start_time = Application.get_env(:plantid_discord_bot, :start_time)