예제 #1
0
        /// <summary>
        /// Gets the list of all permissions including inheritences
        /// </summary>
        /// <returns>The list of all permissions including inheritences</returns>
        public string[] GetPermissions()
        {
            List <string> permissions = new List <string>();

            permissions.AddRange(Permissions);
            PointBlankTools.ForeachLoop <PointBlankGroup>(Inherits, delegate(int index, PointBlankGroup value)
            {
                PointBlankTools.ForeachLoop <string>(value.GetPermissions(), delegate(int i, string v)
                {
                    if (permissions.Contains(v))
                    {
                        return;
                    }

                    permissions.Add(v);
                });
            });

            return(permissions.ToArray());
        }
예제 #2
0
        /// <summary>
        /// Sends the generated message to the discord webhook
        /// </summary>
        /// <param name="message">The generated message to send</param>
        /// <param name="Async">Should sending be asynced</param>
        /// <returns>Was the message sent successfully</returns>
        public bool Send(JObject message, bool Async = true)
        {
            if (message == null)
            {
                return(false);
            }
            if ((DateTime.Now - LastLimit).TotalMilliseconds < 0)
            {
                QueuedMessages.Enqueue(message);
                return(false);
            }
            JObject obj = new JObject {
                { "username", Name }
            };

            if (!string.IsNullOrEmpty(Avatar))
            {
                obj.Add("avatar_url", Avatar);
            }
            obj.Add("tts", false);
            obj.Add("embeds", new JArray()
            {
                message
            });

            FlushQueue(Async);
            if (Async)
            {
                Client.UploadStringAsync(URL, obj.ToString(Formatting.None));
            }
            else
            {
                Client.UploadString(URL.AbsoluteUri, obj.ToString(Formatting.None));
            }

            if (int.Parse(Client.ResponseHeaders["X-RateLimit-Remaining"]) < 1)
            {
                LastLimit = PointBlankTools.FromUnixTime(long.Parse(Client.ResponseHeaders["X-RateLimit-Reset"]));
            }
            return(Client.LastHTTPCode == EDiscordHttpCodes.OK && Client.LastHTTPCode == EDiscordHttpCodes.NO_CONTENT);
        }