diff options
| author | Adelyn Breelove <[email protected]> | 2019-01-21 08:52:33 -0700 |
|---|---|---|
| committer | Adelyn Breelove <[email protected]> | 2019-01-21 08:52:33 -0700 |
| commit | c3d6e15bb89d4a93a2fa486db6c8e126baf4da2e (patch) | |
| tree | 3fe6679ff4520899bab9ab9fb96145efd614a3a3 /lib/models/user | |
| parent | swap order of fields in example bot to reflect correct ordering (diff) | |
| download | disml-c3d6e15bb89d4a93a2fa486db6c8e126baf4da2e.tar.xz disml-c3d6e15bb89d4a93a2fa486db6c8e126baf4da2e.zip | |
folder restructure
Diffstat (limited to 'lib/models/user')
| -rw-r--r-- | lib/models/user/activity.ml | 7 | ||||
| -rw-r--r-- | lib/models/user/activity.mli | 5 | ||||
| -rw-r--r-- | lib/models/user/presence.ml | 10 | ||||
| -rw-r--r-- | lib/models/user/user.ml | 20 | ||||
| -rw-r--r-- | lib/models/user/user.mli | 8 | ||||
| -rw-r--r-- | lib/models/user/user_t.ml | 13 |
6 files changed, 63 insertions, 0 deletions
diff --git a/lib/models/user/activity.ml b/lib/models/user/activity.ml new file mode 100644 index 0000000..8e6ff80 --- /dev/null +++ b/lib/models/user/activity.ml @@ -0,0 +1,7 @@ +open Core + +type t = { + name: string; + kind: int [@key "type"]; + url: string [@default ""]; +} [@@deriving sexp, yojson { strict = false}]
\ No newline at end of file diff --git a/lib/models/user/activity.mli b/lib/models/user/activity.mli new file mode 100644 index 0000000..53173b7 --- /dev/null +++ b/lib/models/user/activity.mli @@ -0,0 +1,5 @@ +type t = { + name: string; + kind: int; + url: string; +} [@@deriving sexp, yojson]
\ No newline at end of file diff --git a/lib/models/user/presence.ml b/lib/models/user/presence.ml new file mode 100644 index 0000000..ab245a7 --- /dev/null +++ b/lib/models/user/presence.ml @@ -0,0 +1,10 @@ +open Core + +type t = { + user: User_t.partial_user; + roles: Snowflake.t list; + game: Activity.t option [@default None]; + guild_id: Snowflake.t; + status: string; + activities: Activity.t list; +} [@@deriving sexp, yojson { strict = false}]
\ No newline at end of file diff --git a/lib/models/user/user.ml b/lib/models/user/user.ml new file mode 100644 index 0000000..bd6583c --- /dev/null +++ b/lib/models/user/user.ml @@ -0,0 +1,20 @@ +open Core +include User_t + +let tag user = + Printf.sprintf "%s#%s" user.username user.discriminator + +let mention user = + Printf.sprintf "<@%d>" user.id + +let default_avatar user = + let avatar = Int.of_string user.discriminator % 5 in + Endpoints.cdn_default_avatar avatar + +let face user = match user.avatar with + | Some avatar -> + let ext = if String.is_substring ~substring:"a_" avatar + then "gif" + else "png" in + Endpoints.cdn_avatar user.id avatar ext + | None -> default_avatar user
\ No newline at end of file diff --git a/lib/models/user/user.mli b/lib/models/user/user.mli new file mode 100644 index 0000000..2cc6184 --- /dev/null +++ b/lib/models/user/user.mli @@ -0,0 +1,8 @@ +include module type of User_t + +val tag : t -> string +val mention : t -> string +val default_avatar : t -> string +val face : t -> string +(* val private_channel : t -> Channel_t.t *) +(* val send : t -> Yojson.Safe.json Deferred.Or_error.t *)
\ No newline at end of file diff --git a/lib/models/user/user_t.ml b/lib/models/user/user_t.ml new file mode 100644 index 0000000..52dbaf4 --- /dev/null +++ b/lib/models/user/user_t.ml @@ -0,0 +1,13 @@ +open Core + +type partial_user = { + id: Snowflake.t; +} [@@deriving sexp, yojson { strict = false}] + +type t = { + id: Snowflake.t; + username: string; + discriminator: string; + avatar: string option [@default None]; + bot: bool [@default false]; +} [@@deriving sexp, yojson { strict = false }]
\ No newline at end of file |