diff options
| author | Adelyn Breedlove <[email protected]> | 2019-02-20 10:17:05 -0700 |
|---|---|---|
| committer | Adelyn Breedlove <[email protected]> | 2019-02-20 10:17:05 -0700 |
| commit | 9c31ba2ed2d876c869ea26fbdeca6bbe7986fe4f (patch) | |
| tree | c23658b58065b79794dff3fd6bb02335feb20db7 | |
| parent | Fix permissions and add more conversions (diff) | |
| download | disml-9c31ba2ed2d876c869ea26fbdeca6bbe7986fe4f.tar.xz disml-9c31ba2ed2d876c869ea26fbdeca6bbe7986fe4f.zip | |
Add permission test command
| -rw-r--r-- | bin/bot.ml | 1 | ||||
| -rw-r--r-- | bin/commands.ml | 17 |
2 files changed, 17 insertions, 1 deletions
@@ -22,6 +22,7 @@ let check_command (message:Message.t) = | "!new" -> Commands.new_guild message rest
| "!delall" -> Commands.delete_guilds message rest
| "!roletest" -> Commands.role_test message rest
+ | "!perms" -> Commands.check_permissions message rest
| _ -> () (* Fallback case, no matched command. *)
(* Example logs setup *)
diff --git a/bin/commands.ml b/bin/commands.ml index eadb430..3cfe210 100644 --- a/bin/commands.ml +++ b/bin/commands.ml @@ -176,4 +176,19 @@ let role_test (message:Message.t) args = | Member_not_found -> Message.reply message "Error: Member not found" | exn -> Message.reply message (Printf.sprintf "Error: %s" Error.(of_exn exn |> to_string_hum)) end >>> ignore - | None -> ()
\ No newline at end of file + | None -> () + +let check_permissions (message:Message.t) _args = + let cache = Mvar.peek_exn Cache.cache in + let permissions = match message.guild_id, message.member with + | Some g, Some m -> + begin match Cache.guild cache g with + | Some g -> + List.fold m.roles ~init:Permissions.empty ~f:(fun acc rid -> + let role = List.find_exn g.roles ~f:(fun r -> r.id = rid) in + Permissions.union acc role.permissions) + | None -> Permissions.empty + end + | _ -> Permissions.empty in + let permissions = Permissions.elements permissions |> List.sexp_of_t Permissions.sexp_of_elt |> Sexp.to_string_hum in + Message.reply message (Printf.sprintf "Permissions: %s" permissions) >>> ignore
\ No newline at end of file |