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); } }
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); } }
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); } }
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); }