Read XEP-163. Essentially, you need to implement the send-side of entity caps (XEP-115), so that you send your presence like this:
<presence from='[email protected]/home'>
<c xmlns='http://jabber.org/protocol/caps'
hash='sha-1'
node='http://example.com/MYBOT'
ver='/FpawanrJ31ymsv4ApCMGcyJmUk='/>
</presence>
When you get get a disco#info request like this:
<iq to='[email protected]/home'
id='disco1'
from='example.net'
type='get'>
<query xmlns='http://jabber.org/protocol/disco#info'
node='http://example.com/MYBOT#/FpawanrJ31ymsv4ApCMGcyJmUk='/>
</iq>
You respond with the list of features you implement:
<iq from='[email protected]/home'
id='disco1'
to='example.net'
type='result'>
<query xmlns='http://jabber.org/protocol/disco#info'
node='http://example.com/MYBOT#/FpawanrJ31ymsv4ApCMGcyJmUk='>
<identity category='client' type='bot' name='MYBOT'/>
<feature var='http://jabber.org/protocol/mood+notify'/>
<feature var='http://jabber.org/protocol/tune+notify'/>
</query>
</iq>
Add a +notify to each node name that you want to implicitly subscribe to, and add the resulting string as a feature, as above. Ensuring that the SHA-1 hash in your outbound presence is correct is the only hard part.