g | x | w | all
Bytes Lang Time Link
020UiuaSBCS240808T190415ZEurope20
034TIBasic160501T231300ZTimtech
045JavaScript160501T184505Zericw314
016MATL160502T012330ZDavid
072GameMaker Language160501T231646ZTimtech
017CJam160501T225927ZSp3000
094Python 2.x160501T184321Zhyper-ne
045rs160501T181630Zkirbyfan

UiuaSBCS, 20 bytes

⨬"._.""O_O"∈"nrpt"⊡1

Try it here!

Explanation

⨬"._.""O_O"∈"nrpt"⊡1
                  ⊡1 is the second letter
           ∈"nrpt"   one of the letters "nprt"?
⨬"._.""O_O"          pick the corresponding face

TI-Basic, 34 bytes

"._.
If inString("nrpt",sub(Ans,2,1:"O-O
Ans

39-byte oneliner:

sub("._.O-O",1+3inString("nrpt",sub(Ans,2,1)),3

JavaScript, 151 123 113 54 50 47 45 bytes

a=>["beat","bored","collapsing","consumed","distressed","empty","fagged","faint","fatigued","finished","jaded","wasted","worn"].includes(a)?"._.":"O_O"

Long, but it's a good start.

a=>/(beat|bored|collapsing|consumed|distressed|empty|fagged|faint|fatigued|finished|jaded|wasted|worn)/.test(a)?"._.":"O_O"

Still pretty long.

a=>(/beat|(bor|consum|distress|finish|jad|wast)ed|collapsing|empty|fa(gged|int|tigued)|worn/).test(a)?"._.":"O_O"

Eliminated some redundancy.

a=>/^(be|bo|c|di|en|fa|fi|j|w)\w+/.test(a)?"._.":"O_O"

Shorter.

a=>/^(a|br|dr|en|fr|i|s|u)\w+/.test(a)?"O_O":"._."

Switched to the other(even shorter) regex for open eyes, instead of closed ones.

a=>/^(a|br|dr|en|fr|i|s|u)/.test(a)?"O_O":"._."

Better.

a=>/^(a|[bdf]r|en|i|s|u)/.test(a)?"O_O":"._."

MATL, 22 16 bytes

2)2\?'._.'}'O_O'

Try it online

22 byte version, 2)'ntpr'=a?'O_O'}'._.'.

GameMaker Language, 72 bytes

a="._."if string_count(string_copy(argument0,2,1),"nrpt")a="O_O"return a

CJam, 17 bytes

q1=1^'n>".O"='_1$

Second letters. This would have been much more fun without any "tricks" in the test cases :/

Try it online.

Python (2.x), 95 94 bytes

import re
print('O_O','._.')[len(re.findall('^a|(br)|(dr)|(en)|(fr)|i|s|u.*',raw_input()))==0]

Regex! If it starts with:
a br dr en fr i s u
then it is on the eyes-open list.

EDIT: Removed 1 byte because I didn't know how wc worked on bash. :P

rs, 45 bytes

^(.*[^t]ed|[cbwef](?![rn]).*)$/._.
[^_.]+/0_0

Live demo.