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
|