4 haha, evil trick ;)
source | link

JavaScript (ES6), 185 142 140140 136 bytes

Now you can tweet-a-pumpkin!

n=>` _____I_____
0 | |4 1
02| |2102421
0 |^| 1
031
|_|_|_|_|_|_|`.replace(/\d/g,x=>x-2?x-3?x^n>30?"| |":"| | |":n>31?"XXXXX":"VvVvV":n>31?"o":"^")

Probably still room for improvement...

JavaScript (ES6), 185 142 140 bytes

Now you can tweet-a-pumpkin!

n=>` _____I_____
0 | | 1
02| |21
0 |^| 1
031
|_|_|_|_|_|_|`.replace(/\d/g,x=>x-2?x-3?x^n>30?"| |":"| | |":n>31?"XXXXX":"VvVvV":n>31?"o":"^")

Probably still room for improvement...

JavaScript (ES6), 185 142 140 136 bytes

Now you can tweet-a-pumpkin!

n=>` _____I_____
0 4 1
02421
0 |^| 1
031
|_|_|_|_|_|_|`.replace(/\d/g,x=>x-2?x-3?x^n>30?"| |":"| | |":n>31?"XXXXX":"VvVvV":n>31?"o":"^")

Probably still room for improvement...

3 golfed 2 bytes
source | link

JavaScript (ES6), 185 142142 140 bytes

Now you can tweet-a-pumpkin!

n=>` _____I_____
0 | | 1
02| |21
0 |^| 1
031
|_|_|_|_|_|_|`.replace(/\d/g,x=>x-2?x-3?x-(n>30)x^n>30?"| |":"| | |":n>31?"XXXXX":"VvVvV":n>31?"o":"^")

Probably still room for improvement...

JavaScript (ES6), 185 142 bytes

n=>` _____I_____
0 | | 1
02| |21
0 |^| 1
031
|_|_|_|_|_|_|`.replace(/\d/g,x=>x-2?x-3?x-(n>30)?"| |":"| | |":n>31?"XXXXX":"VvVvV":n>31?"o":"^")

Probably still room for improvement...

JavaScript (ES6), 185 142 140 bytes

Now you can tweet-a-pumpkin!

n=>` _____I_____
0 | | 1
02| |21
0 |^| 1
031
|_|_|_|_|_|_|`.replace(/\d/g,x=>x-2?x-3?x^n>30?"| |":"| | |":n>31?"XXXXX":"VvVvV":n>31?"o":"^")

Probably still room for improvement...

2 golfed a ton
source | link

JavaScript (ES6), 185185 142 bytes

n=>` _____I_____
| |0 | | 012|1
02| |21
0 |^| 134| |1
031
|_|_|_|_|_|_|`.replace(/\d/g,x=>+x?x-1?xx=>x-2?x-3?n<31x-(n>30)?"""| |":"| "| |":n>31?"XXXXX":"VvVvV":n>31?"o":"^":`| | |
| | |`.substr((n<31)*2,9):n<31?"| ":"")

Probably still room for improvement...

JavaScript (ES6), 185

n=>` _____I_____
| | | | 012| |21 |^| 134| |
|_|_|_|_|_|_|`.replace(/\d/g,x=>+x?x-1?x-2?x-3?n<31?"":"| ":n>31?"XXXXX":"VvVvV":n>31?"o":"^":`| | |
| | |`.substr((n<31)*2,9):n<31?"| ":"")

Probably still room for improvement...

JavaScript (ES6), 185 142 bytes

n=>` _____I_____
0 | | 1
02| |21
0 |^| 1
031
|_|_|_|_|_|_|`.replace(/\d/g,x=>x-2?x-3?x-(n>30)?"| |":"| | |":n>31?"XXXXX":"VvVvV":n>31?"o":"^")

Probably still room for improvement...

1
source | link