'Dispatch method for any CTCP queries received.
Duplicated CTCP queries are ignored and no dispatch is
made. Unrecognized CTCP queries invoke L{IRCClient.ctcpUnknownQuery}.'

def ctcpQuery(self, user, channel, messages):

    seen = set()
    for (tag, data) in messages:
        method = getattr(self, ('ctcpQuery_%s' % tag), None)
        if (tag not in seen):
            if (method is not None):
                method(user, channel, data)
            else:
                self.ctcpUnknownQuery(user, channel, tag, data)
        seen.add(tag)
