cheesebot/ocaml/irc.ml
2014-03-14 23:02:27 +01:00

41 lines
1.2 KiB
OCaml

open Irc_client_lwt.Io
module C = Irc_client_lwt.Client
let string_opt_to_string = function
| None -> "None"
| Some s -> Printf.sprintf "Some %s" s
let string_list_to_string string_list =
Printf.sprintf "[%s]" (String.concat "; " string_list)
let callback input =
let open Irc_message in
match input with
| Message {prefix=prefix; command=command; params=params; trail=trail} ->
(
Lwt_io.printf "Got message: prefix=%s; command=%s; params=%s; trail=%s\n"
(string_opt_to_string prefix)
command
(string_list_to_string params)
(string_opt_to_string trail)
)
| Parse_error (raw, error) ->
Lwt_io.printf "Failed to parse \"%s\" because: %s" raw error
let lwt_main =
let server = "193.219.128.49" in (* "chat.freenode.net" *)
let chan = "#cheeseburger" in
C.connect ~server ~port:6667 ~username:"cheesebot"
~mode:0 ~realname:"CheeseBot" ~nick:"cheesebot" ~password:"cheese"
>>= (fun connection ->
Lwt_io.printl "Connected"
>>= (fun () -> C.send_join ~connection ~channel:chan)
>>= (fun () -> C.send_privmsg ~connection ~target:chan ~message:"hi")
>>= (fun () -> C.listen ~connection ~callback)
>>= (fun () -> C.send_quit ~connection))
let () =
Lwt_main.run lwt_main