void adminAbstract(ServerMessage e, String m, Func <String, ulong, SocketUser, String> f) { var users = e.msg.MentionedUsers.Where(x => !x.IsBot).Select(x => Tuple.Create(x.Mention, x.Id, x)).ToList(); var message = ""; if (!Funcs.validateMentionTarget(e, m)) { message = "Unable to comply with command. \n\n"; //+ botInfo; } else { var m2 = f(users[0].Item1, users[0].Item2, users[0].Item3); if (m2 != "") { message = m2; } } safeSendMessage(e.Channel, message); }
private void kill(ServerMessage e, string m) { var now = e.msg.Timestamp; var fifteenMins = new TimeSpan(0, 15, 0); try { if (Funcs.validateMentionTarget(e, m)) { foreach (var c in e.Server.TextChannels) { List <ulong> messagesToDelete = new List <ulong>(); Console.Write(1); foreach (var mes in c.CachedMessages.Reverse()) { Console.Write(2); if (now.Subtract(mes.Timestamp).CompareTo(fifteenMins) >= 0) { break; } if (mes.Author.Mention == m /* || mes.User.NicknameMention == m */) { Console.WriteLine("found message: " + mes.Content); messagesToDelete.Add(mes.Id); } } if (messagesToDelete.Count > 0) { c.DeleteMessagesAsync(messagesToDelete.ToArray()); } } } else { Console.WriteLine("unable to validate: " + m); } } catch (Exception exception) { server.safeSendMessage(e.Channel, exception.ToString()); } }
void bork(ServerMessage e, String m) { var split = m.Split(" ".ToCharArray()); string message = "Unable to comply with command. \n\n bork <mention-target> <emoticon> <on/off>"; Console.WriteLine("Bork cmd got: " + m); if (split.Length == 3 || split.Length == 2) { if (Funcs.validateMentionTarget(e, split[0])) { Emote emote; //string emoji = server.toEmojiString(e, split[1]); IEmote emoji = null; if (Emote.TryParse(split[1], out emote)) { emoji = emote; } else { emoji = new Emoji(split[1]); server.safeSendMessage(e.Channel, split[1] + " is not a server emote, optimistically assuming it works anyway."); } if (emoji != null) { var user = Funcs.GetUserByMentionOrName(e.Server.Users, split[0]); if (user == null) { message = "Could not find user: "******"currently borking " + emoji + " at " + split[0]; } else { message = "no such bork: " + emoji + " at " + split[0]; } } else if (split[2] == "on") { // var x = DC.ClientAPI.Send(new EmojiAddRequest(e.Channel.Id, e.Message.Id, )); // x.Wait(); List <String> individualBorklist; if (!borklist.TryGetValue(userId, out individualBorklist)) { individualBorklist = new List <string>(); borklist.Add(userId, individualBorklist); } if (individualBorklist.Contains(emoji.ToString()) || (emote != null && individualBorklist.Find((ems) => ems.Contains(emote.Id.ToString())) != null)) { message = "Already doing this"; } else { individualBorklist.Add(emoji.ToString()); server.XMlDictSerialization(borklistPath, borklist); message = "Understood, borking " + emoji + " at " + split[0] + " from now on"; } } else if (split[2] == "off") { List <String> individualBorklist; if (!borklist.TryGetValue(userId, out individualBorklist)) { message = "I never did that in the first place"; } else { if (emote != null) { var t = individualBorklist.Find((ems) => ems.Contains(emote.Id.ToString())); if (t != null) { individualBorklist.Remove(t); } } else { individualBorklist.Remove(emoji.ToString()); } if (individualBorklist.Count == 0) { borklist.Remove(userId); } server.XMlDictSerialization(borklistPath, borklist); message = "Understood, no more borking " + emoji + " at " + split[0] + " from now on"; } } } } else { message = "Invalid Emoji: " + split[1]; } } } server.safeSendMessage(e.Channel, message); }