Exemplo n.º 1
0
        internal static void Dispatch(string commandName, string[] parameters, IrcIdentity sender, ServerUser serverUser, Channel channel)
        {
            if (CommandList.ContainsKey(commandName))
            {
                var command = CommandList[commandName];

                var commandParameters = new CommandParameters
                    {
                        CommandName = commandName,
                        Parameters = parameters,
                        Sender = sender,
                        ServerUser = serverUser,
                        Channel = channel,
                        Command = command
                    };

                command.Function(commandParameters);
            }
            else
            {
                var commandCompressed = commandName;

                if (null != parameters && parameters.Length > 0)
                {
                    commandCompressed += string.Format(" ({0})", string.Join(",", parameters));
                }
                Debug.WriteLine(
                    string.Format(
                        "Unknown command {0} (from {1})",
                        commandCompressed,
                        (sender != null) ? sender.Nickname.ToString() : "Anonymous"),
                    null != channel ? channel.ToString() : serverUser.ToString());
                var message = string.Format(
                    "Unknown command {0}",
                    commandCompressed);
                serverUser.SendMessage(Command.GetReceiver(sender, channel), message);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// The interprete.
        /// </summary>
        /// <param name="message">
        /// The message.
        /// </param>
        /// <param name="sender">
        /// The sender.
        /// </param>
        /// <param name="serverUser">
        /// The server user.
        /// </param>
        /// <param name="channel">
        /// The channel.
        /// </param>
        internal static void Interprete(string message, IrcIdentity sender, ServerUser serverUser, Channel channel)
        {
            if (null == sender)
            {
                return;
            }

            var user = User.GetOrCreate(sender);

            if (user.Translate)
            {
                var language = Services.DetectLanguage(message, false, user.Language == null ? 0.1 : 0.3);

                if ((language != null) && (language != "en"))
                {
                    user.Language = language;
                }

                if (user.Language != null)
                {
                    message = Services.Translate(user.Language, "en", message);
                    channel.SendMessage(string.Format("{0} ({1}): {2}", user.NickName, user.Language, message));
                }
            }

            if (!user.TalkTo)
            {
                return;
            }

            var answer = AskBot(
                ChatBot.Romulus,
                message,
                sender.Username,
                serverUser.NickName);

            if (channel != null)
            {
                answer = string.Format("-> {0}: {1}", sender.Nickname, answer);
            }

            serverUser.SendMessage(Command.GetReceiver(sender, channel), answer);
        }