35 lines
832 B
Elixir
35 lines
832 B
Elixir
|
defmodule Mix.Tasks.Toot do
|
||
|
@moduledoc """
|
||
|
Creates a bot from a source
|
||
|
"""
|
||
|
|
||
|
use Mix.Task
|
||
|
alias Mobilizon.Actors
|
||
|
alias Mobilizon.Actors.Actor
|
||
|
alias Mobilizon.Repo
|
||
|
alias Mobilizon.Events
|
||
|
alias Mobilizon.Events.Comment
|
||
|
alias Mobilizon.Service.ActivityPub
|
||
|
alias Mobilizon.Service.ActivityPub.Utils
|
||
|
require Logger
|
||
|
|
||
|
@shortdoc "Toot to an user"
|
||
|
def run([from, to, content]) do
|
||
|
Mix.Task.run("app.start")
|
||
|
|
||
|
with %Actor{} = from <- Actors.get_actor_by_name(from),
|
||
|
{:ok, %Actor{} = to} <- ActivityPub.find_or_make_actor_from_nickname(to) do
|
||
|
comment = Utils.make_comment_data(from.url, [to.url], content)
|
||
|
|
||
|
ActivityPub.create(%{
|
||
|
to: [to.url],
|
||
|
actor: from,
|
||
|
object: comment,
|
||
|
local: true
|
||
|
})
|
||
|
else
|
||
|
e -> Logger.error(inspect(e))
|
||
|
end
|
||
|
end
|
||
|
end
|