It seems the solution to my problem was the order in which I configured my /etc/shorewall/rules file. For some reason it ignores ACCEPT rules after I start giving DNAT rules (if that means anything to anyone).
Why, may I ask, are you blocking outgoing ports? Are you afraid one of your programs is going to attack someone else?
The same reason I block incoming ports: I don't want anything on that box to do anything related to the internet unless I say so. The box is connected to the internet 24/7 - it never hurts to be paranoid about security.
I don't know of any software firewall that doesn't prompt you when a local application tries to access the internet so neither of those reasons hold any merit.
Let me guess, you are a Windows user?
I use Shoreline firewall, which is a front-end to IPTables, and runs "in the background" with a text file containing rules. When something related to the internet happens, it checks those rules what to do, and if there are no rules for this situation, it does it's default behavior: it drops the connection (you could set it to accept, but that'd defeat the purpose of the firewall).
This might be difficult to grasp, but the box I'm running my bot on doesn't have a screen, nor anything remotely resembling a graphical interface (unless you count my 1337 shell colors), so "prompting the user" is without meaning on my machine, since there's only a user logged in about 0.5% of each day.