This is indeed very mysterious.
Jeremy Banks pointed out the following little snippet in https://meta.stackoverflow.com/content/js/full-a.js:
$.post("/clippy/get?id="+
So I decided to try /clippy/get?id=1
and received:
"It looks like you're trying to reverse-engineer the clippycorn. You're not getting any help with that."
Edit: I'm making some progress here - it seems that I need to make a POST request to the URL and pass along the fkey
parameter. Doing this usually yields:
{
"later": 1
}
...but every once in a while you'll get a different response. The response seems to be based on the id
parameter. Here is the table of messages we have managed to construct so far:
1: {"text":"It looks like you're downvoting some posts. Do you need help?","thanks":"Continue downvoting without help","options":[{"text":"Look at funny cat pictures to lighten the mood","link":"http://google.com/search?tbm=isch&q=lolcat"}]}
2: {"text":"It looks like you're reading the FAQ. Would you like help?","thanks":"Read the FAQ without help","options":[{"text":"Read the FAQ about reading the FAQ","response":"I am sorry, there are no FAQFAQ at this time."}]}
3: {"text":"It looks like you're searching for something. Want some help?","thanks":"Continue searching without help","options":[{"text":"Read the advanced search tips","link":"/search"},{"text":"Search on all sites in the Stack Exchange network","link":"http://stackexchange.com/search"}]}
4: {"text":"It looks like you have undismissed notifications. Can I help you with that?","thanks":"Leave the notifications alone","options": [{"text":"Learn how to dismiss notification bars","response":"Click the \"x\" on the side of the notification bar to dismiss it.","thanks":"Thank you!"}]}
5: {"text":"It looks like you would love an answer to this question. Would you like help?","options":[{"text":"Offer a bounty on this question","click":".bounty-link"},{"text":"Learn more about bounties","link":"/faq#bounty"}]}
6: {"text":"You seem to use your global inbox a lot. Did you know you can check much older inbox items?","thanks":"The small list at the top of the page is just fine","options":[{"text":"Go to my inbox page","link":"http://stackexchange.com/users/YOUR_ACCOUNT_ID?tab=inbox"}]}
7: {"text":"It looks like you received a good answer here, have you considered accepting it?","thanks":"I know what it means to accept an answer","options":[{"text":"Learn more about accepting answers","link":"/faq#howtoask"}]}
8: {"text":"It looks like you came back after all! Welcome back.","thanks":"Thanks, great to be back","options":[]}
9: {"text":"It looks like you like this site. Would you like to learn more?","thanks":"Just continue browsing around","options":[{"text":"Log in or create an account","link":"/users/login"},{"text":"Learn what this site is all about","link":"/faq"},{"text":"Discover other sites on the Stack Exchange network","link":"http://stackexchange.com/sites"}]}
113: {"text":"It looks like you're mistaking me for a horse. Might I offer you some help?","thanks":"Continue without learning","options":[{"text":"Learn about the difference between ponies and unicorns","link":"https://i.sstatic.net/sQXLc.gif"}]}
294: {"text":"It looks like you're asking about me. That's nice.","thanks":"Go on with asking","options":[]}
6495: {"text":"It seems you're having trouble phrasing a good question title. Would you like some help?","thanks":"Continue asking without help","options":[{"text":"Learn about writing a good title","link":"http://meta.stackexchange.com/questions/10647/how-do-i-write-a-good-title"},{"text":"Get some tips on how to ask questions that get good answers","link":"/questions/how-to-ask"}]}
22017: {"text":"It looks like you're asking about regular expressions. Do you want me to help you?","options":[{"text":"Get help parsing HTML with a regular expression","link":"http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454"}]}
314159: {"text":"You might be spending a little too much time thinking about this prank. Would you like some help?","options":[{"text":"Yeah, I... I should answer some questions or something.","link":"http://stackoverflow.com/unanswered"}]}
378212: {"text":"You appear to be hungry. Can I help you?","thanks":"I am not hungry","options":[{"text":"Learn how to cook a fish in a dishwasher","link":"http://cooking.stackexchange.com/questions/4708/is-it-possible-to-cook-a-whole-fish-in-a-dishwasher"},{"text":"Find out if microwaving food is bad for you","link":"http://skeptics.stackexchange.com/questions/528/is-food-cooked-in-a-microwave-oven-harmful-for-the-health"}]}
The 15 above were discovered while the prank was active. After it was disabled Balpha provided the message of the only missing one:
- ???:
{"text":"Looks like you @mentioned the post owner there. That's not necessary.","thanks":"Continue without help","options":[{"text":"Learn more about replying in comments","link":"/editing-help#comment-reply","dismiss":true},{"text":"Just tell me why the @mention was removed","response":"The post owner will always be notified of new comments, so you don't need to @mention their name.","thanks":"I see, thanks."}]}
According to balpha there were three additional user-specific messages included.
In addition to the triggers built-in to the client-side JavaScript, any ajax requests can return an X-Clippycorn
header with one of these IDs to trigger a message. For example, if you're writing a post that seems to be about the joke itself, the background request to /posts/0/editor-heartbeat/ask
will return the header X-Clippycorn:294
.
Bonus: if you try an ID that is not used or is non-numeric, you receive one of the following HTTP status codes:
437 Only Chuck Norris Can Request This Resource
438 Only Chuck Norris And Jon Skeet Can Request This Resource
442 Not A Real Question
456 These Are Not The Unicorns You Are Looking For
463 Hax0r Detected
469 Status Declined
477 Pluralization Bug
480 Freehand Circle Expected
481 Not Enough jQuery
Some more poking around revealed the following URLs:
I've created a fiddle for viewing the animations here: http://jsfiddle.net/george_edison/JkJxz/9/embedded/result/
The blue bullet () is embedded in the stylesheet.
Part of the JS has been de-obfuscated here: http://pastebin.com/N47agZzm
English
SE, from other browser where i'm not logged in.$.ajax({ url: "/clippy/get?id=42", data: { fkey: StackExchange.options.user.fkey }, async: false, type: 'POST' }).responseText