fulvia/modules/adminchannel.py

115 lines
3.5 KiB
Python
Raw Normal View History

2018-03-16 03:13:43 -04:00
#!/usr/bin/env python3
"""
Some administrative functions relating to the channel the bot is in. Note
that most of these will require the bot to have admin privileges in the
channel.
"""
import re
import module
from tools import op_level, configureHostMask
OP = op_level["op"]
HALFOP = op_level["halfop"]
@module.require_chanmsg
@module.require_privilege(OP, 'You are not a channel operator.')
@module.commands('kick')
@module.example(".kick faggot being a faggot")
def kick(bot, trigger):
"""
Kick a user from the channel.
"""
if bot.channels[trigger.channel].privileges[bot.nick] < HALFOP:
return bot.reply("I'm not a channel operator!")
if not trigger.group(2):
return bot.reply("Who do you want me to kick?")
target, _, reason = trigger.group(2).partition(" ")
if not reason:
reason = "Stop doing the bad."
if target == bot.nick:
return bot.reply("I can't let you do that.")
bot.kick(trigger.channel, target, reason)
@module.require_chanmsg
@module.require_privilege(OP, 'You are not a channel operator.')
@module.commands('ban')
@module.example(".ban faggot")
def ban(bot, trigger):
"""
This give admins the ability to ban a user.
The bot must be a Channel Operator for this command to work.
"""
if bot.channels[trigger.channel].privileges[bot.nick] < HALFOP:
return bot.reply("I'm not a channel operator!")
if not trigger.group(2):
return bot.reply("Who do you want me to ban?")
banmask = configureHostMask(trigger.group(2))
bot.mode(trigger.channel, True, "b", mask=banmask)
@module.require_chanmsg
@module.require_privilege(OP, 'You are not a channel operator.')
@module.commands('unban')
@module.example(".unban faggot")
def unban(bot, trigger):
"""
This give admins the ability to unban a user.
The bot must be a Channel Operator for this command to work.
"""
if bot.channels[trigger.channel].privileges[bot.nick] < HALFOP:
return bot.reply("I'm not a channel operator!")
if not trigger.group(2):
return bot.reply("Who do you want me to ban?")
banmask = configureHostMask(trigger.group(2))
bot.mode(trigger.channel, False, "b", mask=banmask)
@module.require_chanmsg
@module.require_privilege(OP, 'You are not a channel operator.')
@module.commands('kickban', 'kb')
def kickban(bot, trigger):
"""
This gives admins the ability to kickban a user.
The bot must be a Channel Operator for this command to work.
.kickban [#chan] user1 user!*@module.* get out of here
"""
if bot.channels[trigger.channel].privileges[bot.nick] < HALFOP:
return bot.reply("I'm not a channel operator!")
if not trigger.group(2):
return bot.reply("Who do you want me to ban?")
target, _, reason = trigger.group(2).partition(" ")
if not reason:
reason = "Stop doing the bad."
if target == bot.nick:
return bot.reply("I can't let you do that.")
banmask = configureHostMask(trigger.group(2).strip())
bot.mode(trigger.channel, False, "b", mask=banmask)
bot.kick(trigger.channel, target, reason)
@module.require_chanmsg
@module.require_privilege(OP, 'You are not a channel operator.')
@module.commands('settopic')
@module.example(".settopic We're discussing penises, would you like to join?")
def settopic(bot, trigger):
"""
This gives ops the ability to change the topic.
The bot must be a Channel Operator for this command to work.
"""
if bot.channels[trigger.channel].privileges[bot.nick] < HALFOP:
return bot.reply("I'm not a channel operator!")
if not trigger.group(2):
return bot.reply("What do you want the topic set to?")
bot.topic(trigger.channel, trigger.group(2).strip())