3
0
mirror of https://github.com/jlu5/PyLink.git synced 2025-02-03 16:14:10 +01:00

automode: disable on networks where IRC modes aren't supported

Closes #638.
This commit is contained in:
James Lu 2019-10-10 22:23:23 -07:00
parent 297d31dab2
commit d28a9681ac

View File

@ -94,10 +94,14 @@ def _check_automode_access(irc, uid, channel, command):
def match(irc, channel, uids=None): def match(irc, channel, uids=None):
""" """
Automode matcher engine. Set modes on matching users. If uids is not given, check all users in the channel and give
them modes as needed.
""" """
dbentry = db.get(irc.name+channel) dbentry = db.get(irc.name+channel)
if dbentry is None: if not irc.has_cap('has-irc-modes'):
log.debug('(%s) automode: skipping match() because IRC modes are not supported on this protocol', irc.name)
return
elif dbentry is None:
return return
modebot_uid = modebot.uids.get(irc.name) modebot_uid = modebot.uids.get(irc.name)
@ -162,8 +166,7 @@ utils.add_hook(handle_services_login, 'PYLINK_RELAY_SERVICES_LOGIN')
def _get_channel_pair(irc, source, chanpair, perm=None): def _get_channel_pair(irc, source, chanpair, perm=None):
""" """
Fetches the network and channel given a channel pair, Fetches the network and channel given a channel pair, also optionally checking the caller's permissions.
also optionally checking the caller's permissions.
""" """
log.debug('(%s) Looking up chanpair %s', irc.name, chanpair) log.debug('(%s) Looking up chanpair %s', irc.name, chanpair)
try: try:
@ -173,9 +176,6 @@ def _get_channel_pair(irc, source, chanpair, perm=None):
channel = '#' + channel channel = '#' + channel
channel = irc.to_lower(channel) channel = irc.to_lower(channel)
if not irc.is_channel(channel):
raise ValueError("Invalid channel name %s." % channel)
if network: if network:
ircobj = world.networkobjects.get(network) ircobj = world.networkobjects.get(network)
else: else:
@ -211,6 +211,9 @@ def setacc(irc, source, args):
\x02SETACC #staffchan $channel:#mainchan:op o \x02SETACC #staffchan $channel:#mainchan:op o
""" """
if not irc.has_cap('has-irc-modes'):
error(irc, "IRC style modes are not supported on this protocol.")
return
try: try:
chanpair, mask, modes = args chanpair, mask, modes = args