public override void Run(DiscordClient client, DiscordPrivateMessageEventArgs e, string[] args)
        {
            if (args.Length > 0)
            {
                switch (args[0])
                {
                    case "Commands":
                        ReloadCommands();
                        client.SendMessageToUser("Reloaded all commands", e.author);
                        break;

                    case "Permissions":
                        Member.ReloadMembers();
                        Role.ReloadRoles();
                        client.SendMessageToUser("Reloaded permissions", e.author);
                        break;

                    default:
                        client.SendMessageToUser($"Could not reload \"{args[0]}.\" I do not recognize that.", e.author);
                        break;
                }
            }
            else
            {
                // TODO Implement standard Exception system to handle error messages in the command runner
            }
        }
        public override void Run(DiscordClient client, DiscordPrivateMessageEventArgs e, string[] args)
        {
            // TODO Add this argument length checking to command runner
            if (args.Length > 0)
            {
                switch (args[1])
                {
                    case "UserId":
                        if (args[0] == "My")
                        {
                            args[0] = e.author.ID;
                        }

                        // Search through all members on the server for the matching username/id

                        client.SendMessageToUser($"UserId: {e.author.ID}", e.author);
                        break;

                    default:
                        client.SendMessageToUser($"Property \"{args[1]}\" not recognized", e.author);
                        break;
                }
            }
            else
            {
                // TODO Implement standard Exception system to handle error messages in the command runner
            }
        }
        // TODO Implement permissions system
        // Is having this event handler as async even useful?
        private static async void _client_PrivateMessageReceived(object sender, DiscordPrivateMessageEventArgs e)
        {
            Console.WriteLine($"Private Message <- [{e.author.Username} ({e.author.ID})]: \"{e.message}\"");
            string[] parts = e.message.Split(' ');
            string cmd = parts.First();

            // Redundant Lookups
            if (Command.Lookup(cmd) == null)
            {
                _client.SendMessageToUser("Command not found", e.author);
            }
            else if (Member.GetMemberById(e.author.ID).IsPermitted(cmd))
            {
                string[] cmdArgs = new string[parts.Length - 1];

                for (int i = 1; i < parts.Length; i++)
                {
                    cmdArgs[i - 1] = parts[i];
                }

                // Redundant Lookups
                // TODO Implement error reporting
                await Task.Run(() => Command.Lookup(cmd).Run(_client, e, cmdArgs));
            }
            else
            {
                _client.SendMessageToUser("You do not have permission to run this command", e.author);
            }
        }
Example #4
0
        private void MessageCreateEvents(JObject message)
        {
            try
            {
                string tempChannelID = message["d"]["channel_id"].ToString();

                var foundServerChannel = ServersList.Find(x => x.channels.Find(y => y.id == tempChannelID) != null);
                if (foundServerChannel == null)
                {
                    var foundPM = PrivateChannels.Find(x => x.id == message["d"]["channel_id"].ToString());
                    DiscordPrivateMessageEventArgs dpmea = new DiscordPrivateMessageEventArgs();
                    dpmea.Channel = foundPM;
                    dpmea.message = message["d"]["content"].ToString();
                    DiscordMember tempMember = new DiscordMember();
                    tempMember.user.username = message["d"]["author"]["username"].ToString();
                    tempMember.user.id       = message["d"]["author"]["id"].ToString();
                    dpmea.author             = tempMember;

                    if (PrivateMessageReceived != null)
                    {
                        PrivateMessageReceived(this, dpmea);
                    }
                }
                else
                {
                    DiscordMessageEventArgs dmea = new DiscordMessageEventArgs();
                    dmea.Channel = foundServerChannel.channels.Find(y => y.id == tempChannelID);
                    dmea.message = message["d"]["content"].ToString();

                    DiscordMember tempMember = new DiscordMember();
                    tempMember  = foundServerChannel.members.Find(x => x.user.id == message["d"]["author"]["id"].ToString());
                    dmea.author = tempMember;

                    Regex r = new Regex("\\d+");
                    foreach (Match mm in r.Matches(dmea.message))
                    {
                        if (mm.Value == Me.user.id)
                        {
                            if (MentionReceived != null)
                            {
                                MentionReceived(this, dmea);
                            }
                        }
                    }
                    if (MessageReceived != null)
                    {
                        MessageReceived(this, dmea);
                    }

                    KeyValuePair <string, JObject> toAdd = new KeyValuePair <string, JObject>(message["d"]["id"].ToString(), message);
                    MessageLog.Add(toAdd);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("!!! {0}", ex.Message);
                Console.Beep(100, 1000);
            }
        }
        public override void Run(DiscordClient client, DiscordPrivateMessageEventArgs e, string[] args)
        {
            if (args.Length > 0)
            {
                Command command = Lookup(args[0]);
                string response;

                if (command == null)
                {
                    response = $"Command \"{args[0]}\" not recognized, make sure you spelled the command correctly.";
                }
                else
                {
                    response = command.GetUsage();
                }

                client.SendMessageToUser(response, e.author);
            }
            else
            {
                // TODO Implement standard Exception system to handle error messages in the command runner
            }
        }
        private void MessageCreateEvents(JObject message)
        {
            try
            {
                string tempChannelID = message["d"]["channel_id"].ToString();

                var foundServerChannel = ServersList.Find(x => x.channels.Find(y => y.id == tempChannelID) != null);
                if (foundServerChannel == null)
                {
                    if (message["d"]["author"]["id"].ToString() != Me.ID)
                    {
                        var foundPM = PrivateChannels.Find(x => x.id == message["d"]["channel_id"].ToString());
                        DiscordPrivateMessageEventArgs dpmea = new DiscordPrivateMessageEventArgs();
                        dpmea.Channel = foundPM;
                        dpmea.message = message["d"]["content"].ToString();
                        DiscordMember tempMember = new DiscordMember(this);
                        tempMember.Username = message["d"]["author"]["username"].ToString();
                        tempMember.ID = message["d"]["author"]["id"].ToString();
                        dpmea.author = tempMember;


                        if (PrivateMessageReceived != null)
                            PrivateMessageReceived(this, dpmea);
                    }
                    else
                    {
                        //if (DebugMessageReceived != null)
                        //    DebugMessageReceived(this, new DiscordDebugMessagesEventArgs { message = "Ignoring MESSAGE_CREATE for private channel for message sent from this client." });
                    }
                }
                else
                {
                    DiscordMessageEventArgs dmea = new DiscordMessageEventArgs();
                    dmea.Channel = foundServerChannel.channels.Find(y => y.id == tempChannelID);

                    dmea.message_text = message["d"]["content"].ToString();

                    DiscordMember tempMember = new DiscordMember(this);
                    tempMember = foundServerChannel.members.Find(x => x.ID == message["d"]["author"]["id"].ToString());
                    dmea.author = tempMember;

                    DiscordMessage m = new DiscordMessage();
                    m.author = dmea.author;
                    m.channel = dmea.Channel;
                    m.content = dmea.message_text;
                    m.id = message["d"]["id"].ToString();
                    m.RawJson = message;
                    m.timestamp = DateTime.Now;
                    dmea.message = m;

                    Regex r = new Regex("\\d+");
                    foreach (Match mm in r.Matches(dmea.message_text))
                        if (mm.Value == Me.ID)
                            if (MentionReceived != null)
                                MentionReceived(this, dmea);

                    KeyValuePair<string, DiscordMessage> toAdd = new KeyValuePair<string, DiscordMessage>(message["d"]["id"].ToString(), m);
                    MessageLog.Add(toAdd);

                    if (MessageReceived != null)
                        MessageReceived(this, dmea);
                }
            }
            catch (Exception ex)
            {
                DebugLogger.Log("Error ocurred during MessageCreateEvents: " + ex.Message, MessageLevel.Error);
            }
        }
Example #7
0
        private void MessageCreateEvents(JObject message)
        {
            try
            {
                string tempChannelID = message["d"]["channel_id"].ToString();

                var foundServerChannel = ServersList.Find(x => x.channels.Find(y => y.id == tempChannelID) != null);
                if (foundServerChannel == null)
                {
                    var foundPM = PrivateChannels.Find(x => x.id == message["d"]["channel_id"].ToString());
                    DiscordPrivateMessageEventArgs dpmea = new DiscordPrivateMessageEventArgs();
                    dpmea.Channel = foundPM;
                    dpmea.message = message["d"]["content"].ToString();
                    DiscordMember tempMember = new DiscordMember();
                    tempMember.user.username = message["d"]["author"]["username"].ToString();
                    tempMember.user.id = message["d"]["author"]["id"].ToString();
                    dpmea.author = tempMember;


                    if (PrivateMessageReceived != null)
                        PrivateMessageReceived(this, dpmea);
                }
                else
                {
                    DiscordMessageEventArgs dmea = new DiscordMessageEventArgs();
                    dmea.Channel = foundServerChannel.channels.Find(y => y.id == tempChannelID);

                    dmea.message_text = message["d"]["content"].ToString();

                    DiscordMember tempMember = new DiscordMember();
                    tempMember = foundServerChannel.members.Find(x => x.user.id == message["d"]["author"]["id"].ToString());
                    dmea.author = tempMember;

                    DiscordMessage m = new DiscordMessage();
                    m.author = dmea.author;
                    m.channel = dmea.Channel;
                    m.content = dmea.message_text;
                    m.id = message["d"]["id"].ToString();
                    m.RawJson = message;
                    dmea.message = m;

                    Regex r = new Regex("\\d+");
                    foreach (Match mm in r.Matches(dmea.message_text))
                        if (mm.Value == Me.user.id)
                            if (MentionReceived != null)
                                MentionReceived(this, dmea);
                    if (MessageReceived != null)
                        MessageReceived(this, dmea);
                    
                    KeyValuePair<string, DiscordMessage> toAdd = new KeyValuePair<string, DiscordMessage>(message["d"]["id"].ToString(), m);
                    MessageLog.Add(toAdd);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("!!! {0}", ex.Message);
                Console.Beep(100, 1000);
            }
        }
Example #8
0
        private void MessageCreateEvents(JObject message)
        {
            //try
            //{
            string tempChannelID = message["d"]["channel_id"].ToString();

            //DiscordServer foundServerChannel = ServersList.Find(x => x.channels.Find(y => y.id == tempChannelID) != null);
            DiscordChannel potentialChannel = GetDiscordChannelByID(message["d"]["channel_id"].ToString());
            if (potentialChannel == null) //private message create
            {
                if (message["d"]["author"]["id"].ToString() != Me.ID)
                {
                    var foundPM = PrivateChannels.Find(x => x.ID == message["d"]["channel_id"].ToString());
                    DiscordPrivateMessageEventArgs dpmea = new DiscordPrivateMessageEventArgs();
                    dpmea.Channel = foundPM;
                    dpmea.Message = message["d"]["content"].ToString();
                    DiscordMember tempMember = new DiscordMember(this);
                    tempMember.Username = message["d"]["author"]["username"].ToString();
                    tempMember.ID = message["d"]["author"]["id"].ToString();
                    dpmea.Author = tempMember;
                    tempMember.parentclient = this;
                    dpmea.RawJson = message;

                    if (PrivateMessageReceived != null)
                        PrivateMessageReceived(this, dpmea);
                }
                else
                {
                    //if (DebugMessageReceived != null)
                    //    DebugMessageReceived(this, new DiscordDebugMessagesEventArgs { message = "Ignoring MESSAGE_CREATE for private channel for message sent from this client." });
                }
            }
            else
            {
                DiscordMessageEventArgs dmea = new DiscordMessageEventArgs();
                dmea.RawJson = message;
                dmea.Channel = potentialChannel;

                dmea.MessageText = message["d"]["content"].ToString();

                DiscordMember tempMember = null;
                tempMember = potentialChannel.Parent.GetMemberByKey(message["d"]["author"]["id"].ToString());
                if (tempMember == null)
                {
                    tempMember = JsonConvert.DeserializeObject<DiscordMember>(message["author"].ToString());
                    tempMember.parentclient = this;
                    tempMember.Parent = potentialChannel.Parent;

                    potentialChannel.Parent.AddMember(tempMember);
                }

                dmea.Author = tempMember;

                DiscordMessage m = new DiscordMessage();
                m.Author = dmea.Author;
                m.channel = dmea.Channel;
                m.TypeOfChannelObject = dmea.Channel.GetType();
                m.Content = dmea.MessageText;
                m.ID = message["d"]["id"].ToString();
                m.RawJson = message;
                m.timestamp = DateTime.Now;
                dmea.Message = m;
                if (!message["d"]["attachments"].IsNullOrEmpty())
                {
                    List<DiscordAttachment> tempList = new List<DiscordAttachment>();
                    foreach (var attachment in message["d"]["attachments"])
                    {
                        tempList.Add(JsonConvert.DeserializeObject<DiscordAttachment>(attachment.ToString()));
                    }
                    m.Attachments = tempList.ToArray();
                }

                if (!message["d"]["mentions"].IsNullOrEmpty())
                {
                    JArray mentionsAsArray = JArray.Parse(message["d"]["mentions"].ToString());
                    foreach (var mention in mentionsAsArray)
                    {
                        string id = mention["id"].ToString();
                        if (id.Equals(Me.ID))
                        {
                            if (MentionReceived != null)
                                MentionReceived(this, dmea);
                        }
                    }
                }

                KeyValuePair<string, DiscordMessage> toAdd = new KeyValuePair<string, DiscordMessage>(message["d"]["id"].ToString(), m);
                MessageLog.Add(message["d"]["id"].ToString(), m);

                if (MessageReceived != null)
                    MessageReceived(this, dmea);
            }
            //}
            //catch (Exception ex)
            //{
            //    DebugLogger.Log("Error ocurred during MessageCreateEvents: " + ex.Message, MessageLevel.Error);
            //}
        }
 // Should I change run to return a string that is sent back to the user?
 // This could easily allow adding a Pipe operator
 public abstract void Run(DiscordClient client, DiscordPrivateMessageEventArgs e, string[] args);
 public override void Run(DiscordClient client, DiscordPrivateMessageEventArgs e, string[] args)
 {
     client.SendMessageToUser("Pong", e.author);
 }