Files
plantid-discord-bot/lib/plantid_discord_bot.ex
T
owenrees 02372f2076 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
2025-12-06 23:41:59 +01:00

41 lines
1.3 KiB
Elixir

defmodule PlantIdDiscordBot.Consumer do
@moduledoc """
A Discord bot that identifies plants from photos of their organs.
"""
use Nostrum.Consumer
alias Nostrum.Api
alias PlantIdDiscordBot.{Cog, Consumer}
@global_application_commands Consumer.Commands.global_application_commands()
def handle_event({:READY, _data, _ws_state}) do
Api.create_global_application_command(@global_application_commands)
Api.update_status(:online, "Guess the Plant | /help")
end
def handle_event({:INTERACTION_CREATE, %{data: %{name: command}} = interaction, _ws_state}) do
case command do
"source" -> Cog.Info.source(interaction)
"invite" -> Cog.Info.invite(interaction)
"help" -> Cog.Info.help(interaction)
"info" -> Cog.Info.info(interaction)
"stats" -> Cog.Info.stats(interaction)
"status" -> Cog.Info.status(interaction)
"servers" -> Cog.Info.servers(interaction)
end
end
def handle_event({:MESSAGE_CREATE, %{attachments: attachments} = message, _ws_state}) do
if !Enum.empty?(attachments) do
Api.start_typing!(message.channel_id)
Cog.PlantNetMessage.id(message)
end
# if length(attachments) > 0 do
# # deprecated -> Nostrum.Api.Channel.start_typing/1 in v1.0
# Api.start_typing!(message.channel_id)
# Cog.PlantNetMessage.id(message)
# end
end
end