Я занимаюсь ExIrc, чтобы сделать простой бот, но я не могу заставить его работать.Запуск ExIrc supervisor сбой
Я получаю эту ошибку:
** (Mix) Could not start application streamingutils: TwitchSniper.start(:normal,
[]) returned an error: shutdown: failed to start child: TwitchSniper.Bot
** (EXIT) an exception was raised:
** (ArgumentError) argument error
:erlang.apply([%TwitchSniper.Bot.State{client: nil, handlers: [], host: "irc.chat.twitch.tv", name: "Paul Schoenfelder", nick: "hajtosek", pass: "my password", port: 6667, user: "hajtosek"}], :host, [])
(streamingutils) TwitchSniper.Bot.init/1
(stdlib) gen_server.erl:328: :gen_server.init_it/6
(stdlib) proc_lib.erl:239: :proc_lib.init_p_do_apply/3
Я пытался использовать ExIrc библиотеку: https://github.com/bitwalker/exirc
Я просто скопировал большую часть кода из ридх, просто поменялся данные
код :
defmodule State do
defstruct host: "irc.chat.twitch.tv",
port: 6667,
pass: "password",
nick: "hajtosek",
user: "hajtosek",
name: "Paul Schoenfelder",
client: nil,
handlers: []
end
def start_link(_) do
GenServer.start_link(__MODULE__, [%State{}])
end
def init(state) do
# Start the client and handler processes, the ExIrc supervisor is automatically started when your app runs
{:ok, client} = ExIrc.start_client!()
#{:ok, handler} = ExampleHandler.start_link(nil)
# Register the event handler with ExIrc
ExIrc.Client.add_handler client, self
# Connect and logon to a server, join a channel and send a simple message
ExIrc.Client.connect! client, state.host, state.port
ExIrc.Client.logon client, state.pass, state.nick, state.user, state.name
ExIrc.Client.join client, "#channel"
ExIrc.Client.msg client, :privmsg, "#channel", "Hello world!"
ExIrc.Client.msg client, :ctcp, "#channel", "Hello world!"
IO.inspect "IRC activated"
{:ok, %{state | :client => client, :handlers => [self]}}
end
def terminate(_, state) do
# Quit the channel and close the underlying client connection when the process is terminating
ExIrc.Client.quit state.client, "Goodbye, cruel world."
ExIrc.Client.stop! state.client
:ok
end
Большое спасибо, должен сообщить автору библиотеки. – Haito
Я являюсь автором lib, поэтому считаю, что он сообщил;) – bitwalker