mod_config.py

Sun, 09 Nov 2014 20:01:06 +0200

author
Teemu Piippo <crimsondusk64@gmail.com>
date
Sun, 09 Nov 2014 20:01:06 +0200
changeset 68
ecc161d4a6fa
parent 65
20bd76353eb5
child 73
d67cc4fbc3f1
permissions
-rw-r--r--

- fixed bad channel config addressing

from modulecore import command_error
from configfile import Config
import hgapi

ModuleData = {
	'commands':
	[
		{
			'name': 'addchan',
			'description': 'Adds a channel to config',
			'args': '<channel>',
			'level': 'admin',
		},

		{
			'name': 'delchan',
			'description': 'Deletes a channel from config',
			'args': '<channel>',
			'level': 'admin',
		},

		{
			'name': 'chanattr',
			'description': 'Get or set a channel-specific attribute',
			'args': '<channel> <key> [value...]',
			'level': 'admin',
		},
	]
}

def cmd_addchan (bot, args, **rest):
	for channel in bot.channels:
		if channel['name'].upper() == args['channel'].upper():
			command_error ('I already know of %s!' % args['channel'])
	#done

	chan = {}
	chan['name'] = args['channel']
	chan['logchannel'] = False
	bot.channels.append (chan)
	bot.write ('JOIN ' + chan['name'])
	bot.save_config()
#enddef

def cmd_delchan (bot, args, **rest):
	for channel in bot.channels:
		if channel['name'].upper() == args['channel'].upper():
			break;
	else:
		command_error ('unknown channel ' + args['channel'])

	bot.channels.remove (channel)
	bot.write ('PART ' + args['channel'])
	bot.save_config()
#enddef

def bool_from_string (value):
	if value != 'true' and value != 'false':
		command_error ('expected true or false for value')

	return True if value == 'true' else False
#enddef

def cmd_chanattr (bot, args, replyto, **rest):
	for channel in bot.channels:
		if channel['name'] == args['channel']:
			break
	else:
		command_error ('I don\'t know of a channel named ' + args['channel'])

	key = args['key']
	value = args['value']

	if value == '':
		try:
			bot.privmsg (replyto, '%s = %s' % (key, channel[key]))
		except KeyError:
			bot.privmsg (replyto, 'attribute %s is not set' % key)
		return
	#fi

	if key == 'name':
		if replyto == channel['name']:
			replyto = value

		bot.write ('PART ' + channel['name'])
		channel['name'] = value
		bot.write ('JOIN ' + channel['name'] + ' ' + (channel['password'] if hasattr (channel, 'password') else ''))
	elif key == 'password':
		channel['password'] = value
	elif key == 'btannounce':
		channel['btannounce'] = bool_from_string (value)
	elif key == 'btprivate':
		channel['btprivate'] = bool_from_string (value)
	elif key == 'logchannel':
		channel['logchannel'] = bool_from_string (value)
	else:
		command_error ('unknown key ' + key)
	#fi

	bot.privmsg (replyto, '%s is now %s' % (key, channel[key]))
	bot.save_config()
#enddef

mercurial