feat: auto-join channels on admin invite
This commit is contained in:
@@ -1,6 +1,10 @@
|
||||
"""Channel management: kick, ban, unban, topic, mode."""
|
||||
"""Channel management: kick, ban, unban, topic, mode, invite-join."""
|
||||
|
||||
from derp.plugin import command
|
||||
import logging
|
||||
|
||||
from derp.plugin import command, event
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def _require_channel(message):
|
||||
@@ -79,3 +83,16 @@ async def cmd_mode(bot, message):
|
||||
mode_str = parts[1]
|
||||
args = parts[2:]
|
||||
await bot.mode(message.target, mode_str, *args)
|
||||
|
||||
|
||||
@event("INVITE")
|
||||
async def on_invite(bot, message):
|
||||
"""Join a channel when invited by an admin or IRC operator."""
|
||||
if not bot._is_admin(message):
|
||||
log.info("ignoring invite from non-admin %s", message.nick)
|
||||
return
|
||||
channel = message.params[1] if len(message.params) > 1 else None
|
||||
if not channel:
|
||||
return
|
||||
log.info("accepting invite to %s from %s", channel, message.nick)
|
||||
await bot.join(channel)
|
||||
|
||||
Reference in New Issue
Block a user