Skip to content

Instantly share code, notes, and snippets.

@ihumanable
Last active December 3, 2021 21:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save ihumanable/7bc98749a3414fa04dbb76f88525f594 to your computer and use it in GitHub Desktop.
Save ihumanable/7bc98749a3414fa04dbb76f88525f594 to your computer and use it in GitHub Desktop.
If only Discord were this easy
defmodule Discord do
def send_message(%Message{} = message) do
with :ok <- validate_message(message),
:ok <- save_message(message) do
broadcast_message(message)
end
end
defp validate_message(message) do
with :ok <- validate_author_is_member(message),
:ok <- validate_message_length(message),
:ok <- validate_slowmode(message) do
:ok
end
end
defp save_message(message) do
DurableStorage.save(message)
end
defp broadcast_message(message) do
message.channel
|> Channel.recipients()
|> Enum.each(&send(&1, {:message, message}))
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment