3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-11-23 19:19:31 +01:00

automode: mangle channels to "#chanid" on networks where they're stored as int

This allows the bulk of automode's commands to actually function.
This commit is contained in:
James Lu 2019-10-14 09:57:16 -07:00
parent d28a9681ac
commit 41497a8a13

View File

@ -3,6 +3,7 @@ automode.py - Provide simple channel ACL management by giving prefix modes to us
hostmasks or exttargets.
"""
import collections
import string
from pylinkirc import conf, structures, utils, world
from pylinkirc.coremods import permissions
@ -97,6 +98,8 @@ def match(irc, channel, uids=None):
Set modes on matching users. If uids is not given, check all users in the channel and give
them modes as needed.
"""
if isinstance(channel, int) or str(channel).startswith(tuple(string.digits)):
channel = '#' + str(channel) # Mangle channels on networks where they're stored as an ID
dbentry = db.get(irc.name+channel)
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)
@ -169,6 +172,10 @@ def _get_channel_pair(irc, source, chanpair, perm=None):
Fetches the network and channel given a channel pair, also optionally checking the caller's permissions.
"""
log.debug('(%s) Looking up chanpair %s', irc.name, chanpair)
if '#' not in chanpair and chanpair.startswith(tuple(string.digits)):
chanpair = '#' + chanpair # Mangle channels on networks where they're stored by ID
try:
network, channel = chanpair.split('#', 1)
except ValueError: