aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/user.ex1
-rw-r--r--lib/pleroma/user/welcome_message.ex33
2 files changed, 34 insertions, 0 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index 29d2b3d89..3c6a9953d 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -261,6 +261,7 @@ defmodule Pleroma.User do
def register(%Ecto.Changeset{} = changeset) do
with {:ok, user} <- Repo.insert(changeset),
{:ok, user} <- autofollow_users(user),
+ {:ok, _} <- Pleroma.User.WelcomeMessage.post_welcome_message_to_user(user),
{:ok, _} <- try_send_confirmation_email(user) do
{:ok, user}
end
diff --git a/lib/pleroma/user/welcome_message.ex b/lib/pleroma/user/welcome_message.ex
new file mode 100644
index 000000000..6a0ec084f
--- /dev/null
+++ b/lib/pleroma/user/welcome_message.ex
@@ -0,0 +1,33 @@
+defmodule Pleroma.User.WelcomeMessage do
+ alias Pleroma.User
+ alias Pleroma.Web.CommonAPI
+ import Ecto.Query
+
+ def post_welcome_message_to_user(user) do
+ with %User{} = sender_user <- welcome_user(),
+ message when is_binary(message) <- welcome_message() do
+ CommonAPI.post(sender_user, %{
+ "visibility" => "direct",
+ "status" => "@#{user.nickname}\n#{message}"
+ })
+ else
+ _ -> {:ok, nil}
+ end
+ end
+
+ defp welcome_user() do
+ if nickname = Pleroma.Config.get([:instance, :welcome_user_nickname]) do
+ from(u in User,
+ where: u.local == true,
+ where: u.nickname == ^nickname
+ )
+ |> Pleroma.Repo.one()
+ else
+ nil
+ end
+ end
+
+ defp welcome_message() do
+ Pleroma.Config.get([:instance, :welcome_message])
+ end
+end