/// <summary> /// Logs a chat message to the chat log file. /// </summary> /// <param name="chatroom">Chatroom to log for.</param> /// <param name="packet">Packet to log.</param> private void LogMessage(string chatroom, dAmnServerPacket packet) { Chat room = Bot.GetChatroom(chatroom); if (room != null) { dAmnPacket subPacket = packet.GetSubPacket(); string username = subPacket.args["from"]; room.Log("<" + username + "> " + subPacket.body); } }
/// <summary> /// Log a chat action to the chat log file. /// </summary> /// <param name="chatroom">Chatroom to log for.</param> /// <param name="packet">Packet to log.</param> public void LogAction(string chatroom, dAmnServerPacket packet) { Chat room = Bot.GetChatroom(chatroom); dAmnPacket subPacket = packet.GetSubPacket(); string username = subPacket.args["from"]; room.Log(string.Format("{0} {1} {2}",room[username].Symbol, username, subPacket.body)); }
/// <summary> /// Removes user from chat room. /// </summary> private void ChatroomPart(string chatroom, dAmnServerPacket packet) { Chat chat = Bot.GetChatroom(chatroom); if (chat == null) { Bot.Console.Log("Error: user part for a chatroom which doesn't exist."); return; } dAmnPacket subPacket = packet.GetSubPacket(); string username = subPacket.param; string reason = "reason unknown"; if (subPacket.args.ContainsKey("r")) reason = subPacket.args["r"]; // if more than one user is signed in with same user name, only unregister // them if it is the last one if (chat[username].Count == 0) { chat.UnregisterUser(username); } else { chat[username].Count--; } chat.Log(string.Format("** {0} has left. [{1}]", username, reason)); }
/// <summary> /// Changes privilege for a user in the chatroom. /// </summary> private void ChatroomPrivChange(string chatroom, dAmnServerPacket packet) { Chat chat = Bot.GetChatroom(chatroom); if (chat == null) { Bot.Console.Log("Error: Priv change for a chatroom which doesn't exist."); return; } // get info from packet dAmnPacket subPacket = packet.GetSubPacket(); string username = subPacket.param; string privClass = subPacket.args["pc"]; string by = subPacket.args["by"]; // update priv class if user is signed on if (chat.ContainsUser(username)) { chat[username].PrivClass = privClass; } chat.Log(string.Format("** {0} has been made a member of {1} by {2} *", username, privClass, by)); }
/// <summary> /// Updates priv class. /// </summary> private void AdminUpdate(string chatroom, dAmnServerPacket packet) { Chat chat = Bot.GetChatroom(chatroom); if (chat == null) { Bot.Console.Log("Error: Priv add for a chatroom which doesn't exist."); return; } dAmnPacket subPacket = packet.GetSubPacket(); string privClass = subPacket.args["name"]; string by = subPacket.args["by"]; string privs = subPacket.args["privs"]; chat.Log(string.Format("** privilege class {0} has been updated by {1} with {2}", privClass, by, privs)); }
/// <summary> /// Adds a user to the chat room. /// </summary> private void ChatroomJoin(string chatroom, dAmnServerPacket packet) { Chat chat = Bot.GetChatroom(chatroom); if (chat == null) { Bot.Console.Log("Error: user add for a chatroom which doesn't exist."); return; } dAmnPacket subPacket = packet.GetSubPacket(); string username = subPacket.param; // user may exist already (bot and user can sign on at same time) if (chat[username] == null) { // get user details from arg list from the packet dAmnPacket.dAmnArgs a = dAmnPacket.dAmnArgs.getArgsNData(subPacket.body); // create new user User u = new User(Bot) { Username = username, PrivClass = a.args["pc"], Symbol = a.args["symbol"], Realname = a.args["realname"], Description = a.args["typename"], ServerPrivClass = a.args["gpc"] }; chat.RegisterUser(u); } else { chat[username].Count++; } chat.Log(username + " joined."); }
/// <summary> /// Renames a priv class. /// </summary> private void AdminRename(string chatroom, dAmnServerPacket packet) { Chat chat = Bot.GetChatroom(chatroom); if (chat == null) { Bot.Console.Log("Error: Priv rename for a chatroom which doesn't exist."); return; } dAmnPacket subPacket = packet.GetSubPacket(); string privClass = subPacket.args["prev"]; string newPrivClass = subPacket.args["name"]; string by = subPacket.args["by"]; if (chat.PrivClasses.ContainsKey(privClass)) { int privClassLevel = chat.PrivClasses[privClass]; // remove the old and add the new chat.PrivClasses.Remove(privClass); chat.PrivClasses.Add(newPrivClass, privClassLevel); // update users who have this priv class List<User> users = (from u in chat.GetAllMembers() where u.PrivClass == privClass select u).ToList(); // update their priv class to the new one foreach (User u in users) u.PrivClass = newPrivClass; chat.Log(string.Format("The privclass '{0}' was renamed to '{!}' by {2}.", privClass, newPrivClass, by)); } }
/// <summary> /// Removes a priv class. /// </summary> private void AdminRemove(string chatroom, dAmnServerPacket packet) { Chat chat = Bot.GetChatroom(chatroom); if (chat == null) { Bot.Console.Log("Error: Priv delete for a chatroom which doesn't exist."); return; } dAmnPacket subPacket = packet.GetSubPacket(); string by = subPacket.args["by"]; string privClass = subPacket.args["name"]; chat.PrivClasses.Remove(privClass); // get all users who have this priv class List<User> users = (from u in chat.GetAllMembers() where u.PrivClass == privClass select u).ToList(); // update their priv class foreach (User u in users) u.PrivClass = string.Empty; chat.Log(string.Format("The privclass '{0}' was removed by {1}.", privClass, by)); }
/// <summary> /// Moves users from one privclass to another /// </summary> private void AdminMove(string chatroom, dAmnServerPacket packet) { Chat chat = Bot.GetChatroom(chatroom); if (chat == null) { Bot.Console.Log("Error: Priv move for a chatroom which doesn't exist."); return; } dAmnPacket subPacket = packet.GetSubPacket(); string privClass = subPacket.args["prev"]; string newPrivClass = subPacket.args["name"]; string by = subPacket.args["by"]; // get all users who have this priv class List<User> users = (from u in chat.GetAllMembers() where u.PrivClass == privClass select u).ToList(); // update their priv class to the new one foreach (User u in users) u.PrivClass = newPrivClass; chat.Log(string.Format("{0} users moved from privclass '{1}' to '{2}' by {3}.", users.Count, privClass, newPrivClass, by)); }
/// <summary> /// When an admin command generates an error. /// </summary> private void AdminError(string chatroom, dAmnServerPacket packet) { Chat chat = Bot.GetChatroom(chatroom); if (chat == null) { Bot.Console.Log("Error: admin show command for a chatroom which doesn't exist."); return; } dAmnPacket subPacket = packet.GetSubPacket(); string command = subPacket.body; string error = subPacket.args["e"]; chat.Log(string.Format("Admin error. The command '{0}' returned: {1}", command, error)); }
/// <summary> /// Create a new priv class. /// </summary> private void AdminCreate(string chatroom, dAmnServerPacket packet) { Chat chat = Bot.GetChatroom(chatroom); if (chat == null) { Bot.Console.Log("Error: Priv add for a chatroom which doesn't exist."); return; } dAmnPacket subPacket = packet.GetSubPacket(); string privClass = subPacket.args["name"]; string by = subPacket.args["by"]; chat.PrivClasses.Add(privClass, 1); // TODO - figure out what really happens here chat.Log(string.Format("Privclass '{0}' was created by {1}.", privClass, by)); }