Merge "Allow everyone to issue track moderator commands"

This commit is contained in:
Zuul 2018-02-14 12:52:03 +00:00 committed by Gerrit Code Review
commit 942d41b82d
3 changed files with 29 additions and 4 deletions

View File

@ -16,7 +16,10 @@ with several sections of information:
Track moderators commands
=========================
You have to have voice in the channel (+v) to send commands to the ptgbot.
By default the bot allows anyone in the channel to issue track moderation
commands. However note that it is possible for admins to restrict access
to people who have voice in the channel (+v).
Commands follow the following format::
#TRACKNAME COMMAND [PARAMETERS]
@ -133,6 +136,12 @@ You have to be a channel operator (+o) to use admin commands.
~reload
Resets the database entirely (reloads from configuration)
~requirevoice
Requires that users are voiced (+v) to issue track moderation commands
~alloweveryone
Allows everyone in the channel to issue track moderation commands
Local testing
=============

View File

@ -110,8 +110,9 @@ class PTGBot(irc.bot.SingleServerIRCBot):
chan = e.target
if msg.startswith('#'):
if not (self.channels[chan].is_voiced(nick) or
self.channels[chan].is_oper(nick)):
if (self.data.is_voice_required() and not
(self.channels[chan].is_voiced(nick) or
self.channels[chan].is_oper(nick))):
self.send(chan, "%s: Need voice to issue commands" % (nick,))
return
@ -171,6 +172,10 @@ class PTGBot(irc.bot.SingleServerIRCBot):
self.data.unbook(room, timeslot)
elif command == 'newday':
self.data.new_day_cleanup()
elif command == 'requirevoice':
self.data.require_voice()
elif command == 'alloweveryone':
self.data.allow_everyone()
elif command == 'list':
self.send_track_list(chan)
elif command in ('clean', 'add', 'del'):

View File

@ -26,7 +26,7 @@ import random
class PTGDataBase():
BASE = {'tracks': [], 'slots': {}, 'now': {}, 'next': {}, 'colors': {},
'location': {}, 'scheduled': {}, 'additional': {}}
'location': {}, 'scheduled': {}, 'additional': {}, 'voice': 0}
def __init__(self, config):
self.filename = config['db_filename']
@ -167,6 +167,17 @@ class PTGDataBase():
self.data['additional'][room][timeslot] = ""
self.save()
def is_voice_required(self):
return self.data['voice'] == 1
def require_voice(self):
self.data['voice'] = 1
self.save()
def allow_everyone(self):
self.data['voice'] = 0
self.save()
def new_day_cleanup(self):
self.data['now'] = {}
self.data['next'] = {}