Ejemplo n.º 1
0
	def irc_CAP(self, client, msg):
		caps = set(msg.args[2].lower().split())
		if msg.args[1] == "LS":
			sought = (self.req | self.interactive)
			unavailable = sought - caps
			for cap in unavailable:
				client.trigger_handler('cap_denied_'+cap)
			client.send(message.cap('REQ', ' '.join(sought - unavailable)))
		if msg.args[1] == "ACK":
			client.cap_acknowledged = caps
			for cap in caps:
				client.trigger_handler('cap_acknowledged_'+cap)
				if cap in self.interactive:
					self.pending |= set([cap])
			self.try_end(client)
		if msg.args[1] == "NAQ":
			client.cap_denied |= caps
			for cap in caps:
				client.trigger_handler('cap_denied_'+cap)
			self.try_end(client)
Ejemplo n.º 2
0
	def irc_AUTHENTICATE(self, client, msg):
		# We only support PLAIN, so we don't have to do much work here...
		client.send(message.authenticate(self.auth))
		client.send(message.cap('END'))
Ejemplo n.º 3
0
	def try_end(self, client):
		if not self.pending:
			client.send(message.cap('END'))
Ejemplo n.º 4
0
	def irc_client_connected(self, client):
		if self.req or self.interactive:
			client.send(message.cap('LS'))