aboutsummaryrefslogtreecommitdiff
path: root/bin/handler.ml
blob: 5b22527d1081f9d4242cfaaa980e14905215523b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
module Make(Models : Disml.S.Models) = struct
    open Core
    open Async
    open Models
    open Disml.Event

    let check_command (msg:Disml.Message_t.t) =
        if String.is_prefix ~prefix:"!ping" msg.content then
            Message.reply msg "Pong!" >>> ignore
        else if String.is_prefix ~prefix:"!spam" msg.content then
            List.range 0 20
            |> List.iter ~f:(fun i -> Message.reply msg (string_of_int i) >>> ignore)
        else if String.is_prefix ~prefix:"!list" msg.content then
            let count = String.chop_prefix_exn ~prefix:"!list" msg.content |> String.strip |> Int.of_string in
            let list = List.range 0 count
            |> List.sexp_of_t Int.sexp_of_t
            |> Sexp.to_string_hum in
            Message.reply msg list >>> ignore
        else if String.is_prefix ~prefix:"!fold" msg.content then
            let count = String.chop_prefix_exn ~prefix:"!fold" msg.content |> String.strip |> Int.of_string in
            let list = List.range 0 count
            |> List.fold ~init:0 ~f:(+)
            |> Int.to_string in
            Message.reply msg list >>> ignore

    let handle_event = function
    | HELLO _ -> print_endline "Received HELLO" 
    | READY _ -> print_endline "Received READY" 
    | RESUMED _ -> print_endline "Received RESUMED" 
    | INVALID_SESSION _ -> print_endline "Received INVALID_SESSION" 
    | CHANNEL_CREATE _ -> print_endline "Received CHANNEL_CREATE" 
    | CHANNEL_UPDATE _ -> print_endline "Received CHANNEL_UPDATE" 
    | CHANNEL_DELETE _ -> print_endline "Received CHANNEL_DELETE" 
    | CHANNEL_PINS_UPDATE _ -> print_endline "Received CHANNEL_PINS_UPDATE" 
    | GUILD_CREATE _ -> print_endline "Received GUILD_CREATE" 
    | GUILD_UPDATE _ -> print_endline "Received GUILD_UPDATE" 
    | GUILD_DELETE _ -> print_endline "Received GUILD_DELETE" 
    | GUILD_BAN_ADD _ -> print_endline "Received GUILD_BAN_ADD" 
    | GUILD_BAN_REMOVE _ -> print_endline "Received GUILD_BAN_REMOVE" 
    | GUILD_EMOJIS_UPDATE _ -> print_endline "Received GUILD_EMOJIS_UPDATE" 
    | GUILD_INTEGRATIONS_UPDATE _ -> print_endline "Received GUILD_INTEGRATIONS_UPDATE" 
    | GUILD_MEMBER_ADD _ -> print_endline "Received GUILD_MEMBER_ADD" 
    | GUILD_MEMBER_REMOVE _ -> print_endline "Received GUILD_MEMBER_REMOVE" 
    | GUILD_MEMBER_UPDATE _ -> print_endline "Received GUILD_MEMBER_UPDATE" 
    | GUILD_MEMBERS_CHUNK _ -> print_endline "Received GUILD_MEMBERS_CHUNK" 
    | GUILD_ROLE_CREATE _ -> print_endline "Received GUILD_ROLE_CREATE" 
    | GUILD_ROLE_UPDATE _ -> print_endline "Received GUILD_ROLE_UPDATE" 
    | GUILD_ROLE_DELETE _ -> print_endline "Received GUILD_ROLE_DELETE" 
    | MESSAGE_CREATE msg -> check_command msg; print_endline "Received MESSAGE_CREATE" 
    | MESSAGE_UPDATE _ -> print_endline "Received MESSAGE_UPDATE" 
    | MESSAGE_DELETE _ -> print_endline "Received MESSAGE_DELETE" 
    | MESSAGE_BULK_DELETE _ -> print_endline "Received MESSAGE_BULK_DELETE" 
    | MESSAGE_REACTION_ADD _ -> print_endline "Received MESSAGE_REACTION_ADD" 
    | MESSAGE_REACTION_REMOVE _ -> print_endline "Received MESSAGE_REACTION_REMOVE" 
    | MESSAGE_REACTION_REMOVE_ALL _ -> print_endline "Received MESSAGE_REACTION_REMOVE_ALL" 
    | PRESENCE_UPDATE _ -> print_endline "Received PRESENCE_UPDATE" 
    | TYPING_START _ -> print_endline "Received TYPING_START" 
    | USER_UPDATE _ -> print_endline "Received USER_UPDATE" 
    | VOICE_STATE_UPDATE _ -> print_endline "Received VOICE_STATE_UPDATE" 
    | VOICE_SERVER_UPDATE _ -> print_endline "Received VOICE_SERVER_UPDATE" 
    | WEBHOOKS_UPDATE _ -> print_endline "Received WEBHOOKS_UPDATE"
end