Ejemplo n.º 1
0
        private void ChatroomPrivClasses(EventPacket eventPacket, PluginContext context)
        {
            string chatroom = eventPacket.ChatRoom;
            var room = context.ChatRooms[chatroom];

            if (room == null)
            {
                context.Logger.ErrorFormat("Error: member add to a chatroom which doesn't exist.");
                return;
            }

            // iterate through each priv class
            string[] privClasses = eventPacket.Packet.body.TrimEnd('\n').Split('\n');
            foreach (string privClass in privClasses)
            {
                // get priv class details
                string[] tokens = privClass.Split(':');
                string privClassName = tokens[1];
                int privClassLevel = Convert.ToInt32(tokens[0]);

                // add to room
                if (room.HasPrivClass(privClassName))
                    room.GetPrivClass(privClassName).Order = privClassLevel;
                else
                    room.AddPrivClass(new PrivClass(privClassName, privClassLevel));
            }
        }
Ejemplo n.º 2
0
        private void CheckMessage(EventPacket packet, PluginContext context)
        {
            if (!enabled) return;

            bool isToBot = MessageHelper.IsMessageToUser(packet.Message, context.BotSettings.UserName, MsgUsernameParse.Strict);

            // if it's not to us or the message is from us, then don't do anything
            if (!isToBot || packet.From.Equals(context.BotSettings.UserName, StringComparison.OrdinalIgnoreCase))
                return;

            string message = packet.Message.Replace(context.BotSettings.UserName + ":", string.Empty);
            var session = GetSession(packet.From);

            try
            {
                string response = session.Think(message);
                context.ThisRoom.Respond(response);
            }
            catch (Exception ex)
            {
                // log error and try to restart the conversation
                context.Console.WriteLine("Error getting AI response. See bot log for details.", Core.Framework.Shell.Style.Error);
                context.Logger.ErrorFormat(ex, "Error getting AI response. See bot log for details.");
                context.ThisRoom.Respond("Sorry, I missed that. Could you say that again?");
            }
        }
Ejemplo n.º 3
0
        private void Help(CommandPacket packet, PluginContext context)
        {
            if (string.IsNullOrWhiteSpace(packet.Message))
            {
                context.ThisRoom.Respond("You must provide a command to get help information for.");
                return;
            }

            string command = ToLower(packet.Message);
            var commandData = context.Plugins.GetCommandHandler(command);
            if (commandData == null)
            {
                context.ThisRoom.Respond("The command '{0}' does not exist.", command);
                return;
            }

            var help = commandData.Help;
            if (string.IsNullOrWhiteSpace(help.Usage))
            {
                context.ThisRoom.Respond("Help is not available for this command.");
                return;
            }

            StringBuilder output = new StringBuilder(string.Format("<sub>:pointr: <b>Command Name:</b> {0}<br>", command));
            output.AppendFormat(":pointr: <b>Usage:</b> {0}<br>", help.Usage);
            if (!string.IsNullOrWhiteSpace(help.Description))
                output.AppendFormat(":pointr: <b>Description:</b> {0}", help.Description);
            context.ThisRoom.Say(output.ToString());
        }
Ejemplo n.º 4
0
        private void ChatroomPrivChange(EventPacket eventPacket, PluginContext context)
        {
            string chatroom = eventPacket.ChatRoom;
            var room = context.ChatRooms[chatroom];

            if (room == null)
            {
                context.Logger.ErrorFormat("Error: priv change for a chatroom which doesn't exist.");
                return;
            }

            // get info from packet
            Packet subPacket = eventPacket.Packet.GetSubPacket();
            string username = subPacket.param;
            string privClass = subPacket.args["pc"];
            string by = subPacket.args["by"];

            // update priv class if user is signed on
            Member member = room.GetMember(username);
            if (member != null)
            {
                member.PrivClass = privClass;
            }

            context.Console.WriteLine(string.Format("** {0} has been made a member of {1} by {2} *", username, privClass, by), Style.Warning);
            room.Logger.Log(eventPacket.Packet);
        }
Ejemplo n.º 5
0
        private void AdminMove(EventPacket eventPacket, PluginContext context)
        {
            string chatroom = eventPacket.ChatRoom;
            var room = context.ChatRooms[chatroom];

            if (room == null)
            {
                context.Logger.ErrorFormat("Error: priv move for a chatroom which doesn't exist.");
                return;
            }

            Packet subPacket = eventPacket.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<Member> members = (from m in room.Members
                                    where m.PrivClass == privClass
                                    select m).ToList();

            // update their priv class to the new one
            foreach (Member m in members)
                m.PrivClass = newPrivClass;

            context.Console.WriteLine(string.Format("{0} users moved from privclass '{1}' to '{2}' by {3}.", members.Count, privClass, newPrivClass, by));
            room.Logger.Log(eventPacket.Packet);
        }
Ejemplo n.º 6
0
        private void Sudo(CommandPacket packet, PluginContext context)
        {
            Action showHelp = () => context.ThisRoom.Respond("Usage: sudo [user] [command...]");
            string[] args = MessageHelper.MessageToArgs(packet.Message);

            if (args.Length < 2) { showHelp(); return; }

            string userName = args[0];
            string command = args[1];

            if (!context.Authorizer.DoesUserExist(userName))
            {
                context.ThisRoom.Respond("You must provide a user to impersonate.");
                return;
            }
            else if (string.IsNullOrEmpty(command))
            {
                context.ThisRoom.Respond("You must provide a command to execute.");
                return;
            }

            // modify the packet
            packet.OverrideFrom(userName);
            packet.OverrideCommand(command);
            packet.OverrideMessage(packet.Message.Right(userName.Length).Trim());

            // invoke the command handler
            System.ValidateAndInvokeCommand(packet, context);
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Sets a user's status as away.
 /// </summary>
 /// <param name="user">The user.</param>
 /// <param name="message">The message.</param>
 /// <param name="context">The context.</param>
 private void SetAway(string user, string message, PluginContext context)
 {
     aways[user.ToLower().Trim()] = message;
     if (awayList.IndexOf(user.ToLower().Trim()) < 0)
         awayList.Add(user.ToLower().Trim());
     context.ThisRoom.Say("{0} is now away{1}", user, message != "" ? ": " + message : "");
 }
Ejemplo n.º 8
0
        private void AICommand(CommandPacket packet, PluginContext context)
        {
            if (string.IsNullOrEmpty(packet.Message))
            {
                context.ThisRoom.Respond("Usage: ai [on|off|status]");
                return;
            }

            string cmd = packet.Message.ToLower().Trim();
            switch (cmd)
            {
                case "on":
                case "off":
                    enabled = cmd == "on" ? true : false;
                    context.ThisRoom.Say("** AI respond set to '{0}' by {1} *", cmd, packet.From);
                    if (enabled)
                        sessionTimer.Start();
                    else
                        sessionTimer.Stop();
                    break;
                case "status":
                    string status = enabled ? "on" : "off";
                    context.ThisRoom.Say("** AI respond set to '{0}' *", status);
                    break;
            }
        }
Ejemplo n.º 9
0
        private void Part(EventPacket eventPacket, PluginContext context)
        {
            var packet = eventPacket.Packet;
            string chatroom = eventPacket.ChatRoom;

            if (packet.args["e"] == "not joined" ||
                packet.args["e"] == "bad namespace")
                return; // bail here because we wouldn't have this chatroom registered in these cases

            // get part reason
            string reason = string.Empty;
            if (packet.args.ContainsKey("r"))
                reason = packet.args["r"];
            reason = string.IsNullOrEmpty(reason) ? reason : " Reason: " + reason;

            // tell the bot to leave the chatroom
            context.ChatRooms[chatroom].Logger.Log(packet);
            context.ChatRooms.Remove(chatroom);
            context.Console.WriteLine(string.Format("** Bot has left the chatroom {0}.{1}", chatroom, reason), Style.Out);

            // if it's an autojoin channel, try to sign back in
            if (context.BotSettings.AutoJoins.Contains(chatroom.Trim('#')))
            {
                context.Client.Join(chatroom);
                context.Console.WriteLine("*** Bot rejoined " + chatroom + " *", Style.Out);
            }
            else if (context.ChatRooms.Count == 0)
            {
                context.Console.WriteLine("No longer joined to any rooms! Exiting...", Style.Warning);
                context.Listener.Stop();
            }
        }
Ejemplo n.º 10
0
        private void Kicked(EventPacket eventPacket, PluginContext context)
        {
            string chatroom = eventPacket.ChatRoom;
            var room = context.ChatRooms[chatroom];
            var packet = eventPacket.Packet;

            if (room == null)
            {
                context.Logger.ErrorFormat("Error: kick event for a chatroom which doesn't exist.");
                return;
            }

            // log kick
            string reason = string.IsNullOrEmpty(packet.body) ? string.Empty : " Reason: " + packet.body;
            string message = string.Format("Bot was kicked from {0}.{1}", chatroom, reason);
            room.Logger.Log(packet);
            context.Console.WriteLine(message, Style.Warning);

            // remove chatroom
            context.ChatRooms.Remove(chatroom);

            // if it's an autojoin channel, try to sign back in
            if (context.BotSettings.AutoJoins.Contains(chatroom.Trim('#')))
            {
                context.Client.Join(chatroom);
                context.Console.WriteLine("Bot rejoined " + chatroom);
            }
        }
Ejemplo n.º 11
0
        private void Join(EventPacket eventPacket, PluginContext context)
        {
            var packet = eventPacket.Packet;
            string chatroom = eventPacket.ChatRoom;

            if (packet.args["e"] != "ok")
            {
                context.ChatRooms.Remove(chatroom);
                context.Console.WriteLine(string.Format("Unable to join chatroom {0}. Reason: {1}", chatroom, packet.args["e"]), Style.Warning);

                if (context.ChatRooms.Count == 0)
                {
                    context.Console.WriteLine("No longer joined to any rooms! Exiting...", Style.Warning);
                    context.Listener.Stop();
                    return;
                }
                else
                {
                    return;
                }
            }
            context.Console.WriteLine(string.Format("*** Bot has joined {0} *", chatroom), Style.Out);
            if (!context.ChatRooms.HasChatRoom(chatroom))
                context.ChatRooms.Add(chatroom);
        }
Ejemplo n.º 12
0
        private void Command(CommandPacket packet, PluginContext context)
        {
            var sender = context.ChatRooms[packet.ChatRoom].GetMember(packet.From);
            var commands = context.Authorizer.AllCommands.Where(c => c.Value.Order <= sender.Role.Order).OrderBy(c => c.Key);
            if (commands.Count() > 0)
            {
                var commandsOutput = new StringBuilder(string.Format("<abbr title='{0}'> </abbr><b>Bot Commands:</b><br><sub>", packet.From));
                foreach (var command in commands)
                {
                    var commandData = context.Plugins.GetCommandHandler(command.Key);
                    // command data may be null if we have a command with a setting
                    // but that command isn't loaded. we'll keep the setting around in case
                    // it's loaded again and just skip it here
                    if (commandData == null)
                        continue;

                    string commandName = command.Key, roleName = command.Value.Name;
                    commandsOutput.AppendFormat("[{0}", commandData.Target.Enabled ? string.Empty : ":bulletred:");
                    commandsOutput.AppendFormat("<b>{0}</b> - {1}] ", commandName, roleName);
                }
                commandsOutput.Append("<br>:bulletblue: Disabled commands are displayed with a :bulletred:");
                context.ThisRoom.Say(commandsOutput.ToString());
            }
            else
            {
                context.ThisRoom.Respond("Sorry there are not any commands that you have access to.");
            }
        }
Ejemplo n.º 13
0
        private void AdminRename(EventPacket eventPacket, PluginContext context)
        {
            string chatroom = eventPacket.ChatRoom;
            var room = context.ChatRooms[chatroom];

            if (room == null)
            {
                context.Logger.ErrorFormat("Error: priv rename for a chatroom which doesn't exist.");
                return;
            }

            Packet subPacket = eventPacket.Packet.GetSubPacket();
            string privClass = subPacket.args["prev"];
            string newPrivClass = subPacket.args["name"];
            string by = subPacket.args["by"];
            if (room.HasPrivClass(privClass))
            {
                int privClassLevel = room.GetPrivClass(privClass).Order;
                // remove the old and add the new
                room.RemovePrivClass(privClass);
                room.AddPrivClass(new PrivClass(newPrivClass, privClassLevel));

                // update users who have this priv class
                List<Member> members = (from m in room.Members
                                        where m.PrivClass == privClass
                                        select m).ToList();
                // update their priv class to the new one
                foreach (Member m in members)
                    m.PrivClass = newPrivClass;

                context.Console.WriteLine(string.Format("The privclass '{0}' was renamed to '{!}' by {2}.", privClass, newPrivClass, by));
                room.Logger.Log(eventPacket.Packet);
            }
        }
Ejemplo n.º 14
0
        private void Plugins(CommandPacket packet, PluginContext context)
        {
            string cmd = packet.Message.Trim().ToLower();

            switch (cmd)
            {
                case "":
                case "list":
                    var listOutput = new StringBuilder("<b>All loaded plugins:</b><br><sub>");
                    foreach (var plugin in context.Plugins.GetPlugins())
                    {
                        string name = plugin.MetaData.Name;
                        string shortcut = plugin.MetaData.ShortCutName;
                        string pluginName = name == shortcut ? name : name + " (" + shortcut + ")";
                        listOutput.AppendFormat(plugin.Enabled ? "[{0}] " : "<b>[{0}]</b> ", pluginName);
                    }
                    listOutput.Append("<br>:bulletblue: Plugins that are deactivated are in bold.");
                    context.ThisRoom.Say(listOutput.ToString());
                    break;
                case "reload":
                    context.Plugins.Load();
                    context.ThisRoom.Say("** all plugins reloaded *");
                    break;
                default:
                    context.ThisRoom.Respond("Usage: plugins [list|reload]");
                    break;
            }
        }
Ejemplo n.º 15
0
 private void Command(CommandPacket packet, PluginContext context)
 {
     string motion = rockPaperScissors[randomizer.Next(3)];
     string say = string.Empty;
     switch (packet.Message.ToLower())
     {
         case "rock":
             if (motion == "rock") say = "Rock ties rock.";
             if (motion == "paper") say = "Paper covers rock. You lose.";
             if (motion == "scissors") say = "Rock smashes scissors. You win.";
             break;
         case "paper":
             if (motion == "rock") say = "Paper covers rock. You win.";
             if (motion == "paper") say = "Paper ties paper.";
             if (motion == "scissors") say = "Scissors cut paper. You lose.";
             break;
         case "scissors":
             if (motion == "rock") say = "Rock smashes scissors. You lose.";
             if (motion == "paper") say = "Scissors cut paper. You win.";
             if (motion == "scissors") say = "Scissors tie scissors.";
             break;
         default:
             context.ThisRoom.Respond("Usage: shoot [rock | paper | scissors]");
             return;
     }
     context.ThisRoom.Respond(say);
 }
Ejemplo n.º 16
0
        private void AdminRemove(EventPacket eventPacket, PluginContext context)
        {
            string chatroom = eventPacket.ChatRoom;
            var room = context.ChatRooms[chatroom];

            if (room == null)
            {
                context.Logger.ErrorFormat("Error: priv remove for a chatroom which doesn't exist.");
                return;
            }

            Packet subPacket = eventPacket.Packet.GetSubPacket();
            string by = subPacket.args["by"];
            string privClass = subPacket.args["name"];
            room.RemovePrivClass(privClass);

            // get all users who have this priv class
            List<Member> members = (from m in room.Members
                                    where m.PrivClass == privClass
                                    select m).ToList();

            // update their priv class
            foreach (Member m in members)
                m.PrivClass = string.Empty;

            context.Console.WriteLine(string.Format("The privclass '{0}' was removed by {1}.", privClass, by));
            room.Logger.Log(eventPacket.Packet);
        }
Ejemplo n.º 17
0
        private void Part(EventPacket packet, PluginContext context)
        {
            if (!context.ChatRooms.HasChatRoom(packet.ChatRoom))
                return; // we don't have a reference for some wierd reason

            var chatroom = context.ChatRooms[packet.ChatRoom];
            MainWindowInvoke(window => window.PartChatroom(chatroom));
        }
Ejemplo n.º 18
0
        private void Ignore(CommandPacket packet, PluginContext context)
        {
            var args = MessageHelper.MessageToArgs(packet.Message).Iterator();
            string cmd = args.Next(ToLower), userName = args.Next(ToLower);
            if (args.Length == 0) cmd = "list";

            switch (cmd)
            {
                case "list":
                    if (context.BotSettings.IgnoredUsers.Count == 0)
                    {
                        context.ThisRoom.Respond("The ignored user list is empty.");
                        return;
                    }
                    else
                    {
                        StringBuilder output = new StringBuilder("<b>Ignored Users</b>:<br /><sub>");
                        foreach (string u in context.BotSettings.IgnoredUsers)
                            output.AppendFormat("[{0}] ", u);
                        context.ThisRoom.Say(output.ToString());
                    }
                    break;
                case "add":
                    if (string.IsNullOrEmpty(userName))
                    {
                        context.ThisRoom.Respond("Please provide a username to add.");
                        return;
                    }
                    if (context.BotSettings.IgnoredUsers.Contains(userName))
                    {
                        context.ThisRoom.Respond("This username is already in the ignored list.");
                        return;
                    }
                    context.BotSettings.IgnoredUsers.Add(userName);
                    context.BotSettings.Save();
                    context.ThisRoom.Respond("** The username '{0}' has been added to the ignore list *", userName);
                    break;
                case "remove":
                case "delete":
                case "del":
                    if (string.IsNullOrEmpty(userName))
                    {
                        context.ThisRoom.Respond("Please provide a username to remove.");
                        return;
                    }
                    if (!context.BotSettings.IgnoredUsers.Contains(userName))
                    {
                        context.ThisRoom.Respond("This username is not in the ignored list.");
                        return;
                    }
                    context.BotSettings.IgnoredUsers.Remove(userName);
                    context.BotSettings.Save();
                    context.ThisRoom.Respond("** The username '{0}' has been removed from the ignore list *", userName);
                    break;
            }
        }
Ejemplo n.º 19
0
 private void CheckMessage(EventPacket packet, PluginContext context)
 {
     // make sure the message is to us but not from us - if so flash the window
     if (MessageHelper.IsMessageToUser(packet.Message, context.BotSettings.UserName, MsgUsernameParse.Lazy) &&
         packet.From.ToLower() != context.BotSettings.UserName.ToLower() &&
         packet.ChatRoom.ToLower().Trim('#') != "datashare")
     {
         FlashConsoleWindow(Process.GetCurrentProcess().MainWindowHandle);
     }
 }
Ejemplo n.º 20
0
 private void RussianRouletteCommand(CommandPacket packet, PluginContext context)
 {
     int spin = randomizer.Next(1, 6);
     int bullet = randomizer.Next(1, 6);
     context.ThisRoom.Respond("You place a bullet in the :gun: and spin it around. Then you put it to your head, and pull...");
     if (spin == bullet)
         context.ThisRoom.Respond("BLAM! You lose.");
     else
         context.ThisRoom.Respond(":phew: You're alright.");
 }
Ejemplo n.º 21
0
        private void AutoJoin(CommandPacket packet, PluginContext context)
        {
            Action showHelp = () => context.ThisRoom.Respond("Usage: autojoin [add|del|list] [room]");

            var args = MessageHelper.MessageToArgs(packet.Message);
            if (args.Length != 2)
            {
                showHelp();
                return;
            }

            string cmd = args[0].ToLower().Trim(), room = args[1].ToLower().Trim().Trim('#');
            switch (cmd)
            {
                case "add":
                    if (context.BotSettings.AutoJoins.Contains(room))
                    {
                        context.ThisRoom.Respond("{0} is already on the autojoin list.", room);
                    }
                    else
                    {
                        context.BotSettings.AutoJoins.Add(room);
                        context.ThisRoom.Respond("Added {0} to the autojoin list.", room);
                    }
                    break;
                case "remove":
                case "del":
                case "delete":
                    if (!context.BotSettings.AutoJoins.Contains(room))
                    {
                        context.ThisRoom.Respond("{0} is not on the autojoin list.", room);
                    }
                    else
                    {
                        context.BotSettings.AutoJoins.Remove(room);
                        context.ThisRoom.Respond("Deleted {0} from the autojoin list.", room);
                    }
                    break;
                case "list":
                    var listOutput = new StringBuilder(string.Format("<abbr title='{0}'> </abbr><b>Autojoin List:</b><br>", packet.From));
                    foreach (string s in context.BotSettings.AutoJoins)
                        listOutput.Append("-> ").Append(s).Append("<br>");
                    context.ThisRoom.Say(listOutput.ToString());
                    break;
                case "auto":

                    break;
                default:
                    showHelp();
                    break;
            }
        }
Ejemplo n.º 22
0
        private void AutoJoinDatashare(EventPacket packet, PluginContext context)
        {
            var p = packet.Packet;
            if (p.args.ContainsKey("e") && p.args["e"] == "ok")
            {
                // we've successfully logged in, register all BDS handlers
                bdsHandlers.Add("BOTCHECK", BdsBotcheck);
                bdsHandlers.Add("BOTDEF", BdsBotdef);

                // join the room
                context.Client.Join(DatashareNS);
            }
        }
Ejemplo n.º 23
0
 private void AwayCommand(CommandPacket packet, PluginContext context)
 {
     var message = packet.Message;
     if (message.ToLower().Trim() == "back")
     {
         BackCommand(packet, context);
         return;
     }
     else
     {
         SetAway(packet.From, message, context);
     }
 }
Ejemplo n.º 24
0
        private void CTrig(CommandPacket packet, PluginContext context)
        {
            string newTrigger = packet.Message;
            if (string.IsNullOrWhiteSpace(newTrigger))
            {
                context.ThisRoom.Respond("Usage: ctrig [trigger]");
                return;
            }

            context.BotSettings.Trigger = newTrigger;
            context.BotSettings.Save();
            context.ThisRoom.Say("** bot trigger changed to {0} by {1} *", newTrigger, packet.From);
        }
Ejemplo n.º 25
0
 private void EightBall(CommandPacket packet, PluginContext context)
 {
     string question = packet.Message;
     if (string.IsNullOrWhiteSpace(question))
     {
         context.ThisRoom.Respond("Please ask a question!");
     }
     else
     {
         string answer = messages[random.Next(0, messages.Length)];
         context.ThisRoom.Say("The 8ball says <abbr title='{0}'> </abbr>: <b>{1}</b>", packet.From, answer);
     }
 }
Ejemplo n.º 26
0
 private void Action(EventPacket eventPacket, PluginContext context)
 {
     var room = context.ChatRooms[eventPacket.ChatRoom];
     if (room != null && room.Logger.Enabled)
     {
         var subPacket = eventPacket.Packet.GetSubPacket();
         context.Console.WriteLine(string.Format("[{0}] * {1} {2}",
             eventPacket.ChatRoom,
             subPacket.args["from"],
             subPacket.body));
         room.Logger.Log(eventPacket.Packet);
     }
 }
Ejemplo n.º 27
0
        private void ChatroomMemberList(EventPacket eventPacket, PluginContext context)
        {
            string chatroom = eventPacket.ChatRoom;
            var room = context.ChatRooms[chatroom];

            if (room == null)
            {
                context.Logger.ErrorFormat("Error: member list for a chatroom which doesn't exist.");
                return;
            }

            // iterate through each user
            string[] subPackets = eventPacket.Packet.body.Split(new string[] { "\n\n" }, StringSplitOptions.None);
            foreach (string subPacket in subPackets)
            {
                if (subPacket == "")
                    continue;

                // get subpacket
                Packet p = new Packet(subPacket);
                Member member = room.GetMember(p.param);
                if (member == null)
                {
                    // get the bot user if they exist
                    var user = context.Authorizer.GetUser(p.param);

                    room.AddMember(new Member
                    {
                        UserName = p.param,
                        RealName = p.args.ContainsKey("realname") ? p.args["realname"] : string.Empty,
                        Description = p.args.ContainsKey("typename") ? p.args["typename"] : string.Empty,
                        PrivClass = p.args.ContainsKey("pc") ? p.args["pc"] : string.Empty,
                        //ServerPrivClass = p.args["gpc"],
                        Symbol = p.args.ContainsKey("symbol") ? p.args["symbol"] : string.Empty,
                        Role = user == null ? context.Authorizer.DefaultRole : user.Role
                    });
                }
                else
                {
                    member.UserName = p.param;
                    member.RealName = p.args.ContainsKey("realname") ? p.args["realname"] : string.Empty;
                    member.Description = p.args.ContainsKey("typename") ? p.args["typename"] : string.Empty;
                    member.PrivClass = p.args.ContainsKey("pc") ? p.args["pc"] : string.Empty;
                    //user.ServerPrivClass = p.args["gpc"];
                    member.Symbol = p.args.ContainsKey("symbol") ? p.args["symbol"] : string.Empty;
                    member.Count++;
                }
            }
        }
Ejemplo n.º 28
0
        private void Join(CommandPacket packet, PluginContext context)
        {
            string rooms = packet.Message.Trim().ToLower();
            if (string.IsNullOrWhiteSpace(rooms))
            {
                context.ThisRoom.Respond("You must specify a room to join.");
                return;
            }

            foreach (string r in rooms.Split(' '))
            {
                context.Client.Join(r);
                context.ThisRoom.Say("** joined the chatroom #{0} *", r);
            }
        }
Ejemplo n.º 29
0
        private void DefineCommand(CommandPacket packet, PluginContext context)
        {
            string word = packet.Message;
            if (string.IsNullOrEmpty(word))
            {
                context.ThisRoom.Respond("Usage: define [word]");
                return;
            }

            string definition = GetDefinition(word);
            if (string.IsNullOrEmpty(definition))
                context.ThisRoom.Respond("<b>No definition was found for <u>{0}</u>.</b>", word);
            else
                context.ThisRoom.Say("<b><u>" + word + "</u></b>:<br /><sub>" + ParseDefinition(definition) + "</sub>");
        }
Ejemplo n.º 30
0
        private void ChatroomJoin(EventPacket eventPacket, PluginContext context)
        {
            var packet = eventPacket.Packet;
            string chatroom = eventPacket.ChatRoom;
            var room = context.ChatRooms.Get(chatroom);

            if (room == null)
            {
                context.Logger.ErrorFormat("Error: user add for chatroom '{0}' which doesn't exist.", chatroom);
                return;
            }

            Packet subPacket = packet.GetSubPacket();
            string username = subPacket.param;
            // user may exist already (bot and user can sign on at same time)
            var member = room.GetMember(username);
            if (member == null)
            {
                // get user details from  arg list from the packet
                Packet.Args a = Packet.Args.getArgsNData(subPacket.body);

                // get the bot user if they exist
                var user = context.Authorizer.GetUser(username);

                // create new user
                Member m = new Member
                {
                    UserName = username,
                    PrivClass = a.args["pc"],
                    Symbol = a.args["symbol"],
                    RealName = a.args["realname"],
                    Description = a.args["typename"],
                    ServerPrivClass = a.args["gpc"],
                    Role = user == null ? context.Authorizer.DefaultRole : user.Role
                };
                room.AddMember(m);
            }
            else
            {
                member.Count++;
            }

            if (room.Logger.Enabled)
            {
                context.Console.WriteLine(string.Format("[{0}] {1} joined.", chatroom, username));
                room.Logger.Log(eventPacket.Packet);
            }
        }