Пример #1
0
async def banish(cmd):
    user_data = EwUser(member=cmd.message.author)

    if user_data.life_state != ewcfg.life_state_kingpin:
        response = "Only the Rowdy F****r {} and the Cop Killer {} can do that.".format(
            ewcfg.emote_rowdyfucker, ewcfg.emote_copkiller)
    else:
        member = None
        if cmd.mentions_count == 1:
            member = cmd.mentions[0]
            if member.id == cmd.message.author.id:
                member = None

        if member == None:
            response = "Who?"
        else:
            member_data = EwUser(member=member)
            member_data.ban(faction=user_data.faction)
            member_data.unvouch(faction=user_data.faction)

            if member_data.faction == user_data.faction:
                member_data.faction = ""
                if member_data.life_state == ewcfg.life_state_enlisted:
                    member_data.life_state = ewcfg.life_state_juvenile

            member_data.persist()
            response = "{} has been banned from enlisting in the {}".format(
                member.display_name, user_data.faction)
            await ewrolemgr.updateRoles(client=cmd.client, member=member)

    await ewutils.send_message(
        cmd.client, cmd.message.channel,
        ewutils.formatMessage(cmd.message.author, response))
Пример #2
0
async def banish(cmd):
	user_data = EwUser(member = cmd.message.author)

	if user_data.life_state != ewcfg.life_state_kingpin and user_data.life_state != ewcfg.life_state_executive and not cmd.message.author.guild_permissions.administrator:
		response = "Only the Rowdy F****r {}, the Cop Killer {} and Slimecorp Executives {} can do that.".format(ewcfg.emote_rowdyfucker, ewcfg.emote_copkiller, ewcfg.emote_slimecorp)
	else:
		member = None
		if cmd.mentions_count == 1:
			member = cmd.mentions[0]
			
			# >:]
			
			# if member.id == cmd.message.author.id:
			# 	member = None

		if member == None:
			response = "Who?"
		else:
			member_data = EwUser(member = member)
			member_data.ban(faction = user_data.faction)
			member_data.unvouch(faction = user_data.faction)

			if member_data.faction == user_data.faction:
				member_data.faction = ""
				if member_data.life_state == ewcfg.life_state_enlisted:
					member_data.life_state = ewcfg.life_state_juvenile

			member_poi = ewcfg.id_to_poi.get(member_data.poi)
			if ewmap.inaccessible(user_data = member_data, poi = member_poi):
				member_data.poi = ewcfg.poi_id_downtown
			member_data.persist()
			response = "{} has been banned from enlisting in the {}".format(member.display_name, user_data.faction)
			await ewrolemgr.updateRoles(client = cmd.client, member = member)

	await ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response))
Пример #3
0
async def pardon(cmd):
    response = ""
    user_data = EwUser(member=cmd.message.author)

    if user_data.life_state != ewcfg.life_state_kingpin:
        response = "Only the Rowdy F****r {} and the Cop Killer {} can do that.".format(
            ewcfg.emote_rowdyfucker, ewcfg.emote_copkiller)
    else:
        member = None
        if cmd.mentions_count == 1:
            member = cmd.mentions[0]
            if member.id == cmd.message.author.id:
                member = None

        if member == None:
            response = "Who?"
        else:
            member_data = EwUser(member=member)

            if member_data.faction == "":
                response = "{} isn't enlisted.".format(member.display_name)
            else:
                faction_old = member_data.faction
                member_data.faction = ""

                if member_data.life_state == ewcfg.life_state_enlisted:
                    member_data.life_state = ewcfg.life_state_juvenile

                member_data.persist()
                response = "{} has been released from his association with the {}.".format(
                    member.display_name, faction_old)

    await cmd.client.send_message(
        cmd.message.channel, ewutils.formatMessage(cmd.message.author,
                                                   response))
Пример #4
0
async def enlist(cmd):
    time_now = int(time.time())
    response = ""
    user_data = EwUser(member=cmd.message.author)

    if user_data.life_state == ewcfg.life_state_grandfoe:
        return

    if user_data.life_state == ewcfg.life_state_juvenile:
        faction = ""
        if cmd.tokens_count > 1:
            faction = cmd.tokens[1].lower()

        user_slimes = user_data.slimes

        if user_slimes < ewcfg.slimes_toenlist:
            response = "You need to mine more slime to rise above your lowly station. ({}/{})".format(
                user_slimes, ewcfg.slimes_toenlist)
        else:
            if faction == "":
                faction = user_data.faction

            if faction == ewcfg.faction_rowdys or faction == ewcfg.faction_killers:
                if len(user_data.faction) > 0 and user_data.faction != faction:
                    # Disallow joining a new faction. Player must be pardoned first.
                    response = "Disgusting traitor. You can only join the {}.".format(
                        user_data.faction)
                else:
                    response = "Enlisting in the {}.".format(faction)

                    user_data.life_state = ewcfg.life_state_enlisted
                    user_data.faction = faction
                    user_data.persist()

                await ewrolemgr.updateRoles(client=cmd.client,
                                            member=cmd.message.author)
            else:
                response = "Which faction? Say '{} {}' or '{} {}'.".format(
                    ewcfg.cmd_enlist, ewcfg.faction_killers, ewcfg.cmd_enlist,
                    ewcfg.faction_rowdys)

    elif user_data.life_state == ewcfg.life_state_corpse:
        response = 'You are dead, bitch.'

    else:
        response = "You can't do that right now, bitch."

    # Send the response to the player.
    await cmd.client.send_message(
        cmd.message.channel, ewutils.formatMessage(cmd.message.author,
                                                   response))
Пример #5
0
async def pardon(cmd):
    user_data = EwUser(member=cmd.message.author)

    if user_data.life_state != ewcfg.life_state_kingpin and user_data.life_state != ewcfg.life_state_executive and not cmd.message.author.guild_permissions.administrator:
        response = "Only the Rowdy F****r {} and the Cop Killer {} can do that.".format(
            ewcfg.emote_rowdyfucker, ewcfg.emote_copkiller,
            ewcfg.emote_slimecorp)
    else:
        member = None
        if cmd.mentions_count == 1:
            member = cmd.mentions[0]
            if member.id == cmd.message.author.id:
                member = None

        if member == None:
            response = "Who?"
        else:
            member_data = EwUser(member=member)
            member_data.unban(faction=user_data.faction)

            if member_data.faction == "":
                response = "{} has been allowed to join the {} again.".format(
                    member.display_name, user_data.faction)
            else:
                faction_old = member_data.faction
                member_data.faction = ""

                if member_data.life_state == ewcfg.life_state_enlisted:
                    member_data.life_state = ewcfg.life_state_juvenile
                    member_data.weapon = -1

                response = "{} has been released from their association with the {}.".format(
                    member.display_name, faction_old)

            member_poi = ewcfg.id_to_poi.get(member_data.poi)
            if ewmap.inaccessible(user_data=member_data, poi=member_poi):
                member_data.poi = ewcfg.poi_id_downtown
            member_data.persist()
            await ewrolemgr.updateRoles(client=cmd.client, member=member)

    await ewutils.send_message(
        cmd.client, cmd.message.channel,
        ewutils.formatMessage(cmd.message.author, response))
Пример #6
0
async def pardon(cmd):
    user_data = EwUser(member=cmd.message.author)

    if user_data.life_state != ewcfg.life_state_kingpin:
        response = "Only the Rowdy F****r {} and the Cop Killer {} can do that.".format(
            ewcfg.emote_rowdyfucker, ewcfg.emote_copkiller)
    else:
        member = None
        if cmd.mentions_count == 1:
            member = cmd.mentions[0]
            if member.id == cmd.message.author.id:
                member = None

        if member == None:
            response = "Who?"
        else:
            member_data = EwUser(member=member)
            member_data.unban(faction=user_data.faction)

            if member_data.faction == "":
                response = "{} has been allowed to join the {} again.".format(
                    member.display_name, user_data.faction)
            else:
                faction_old = member_data.faction
                member_data.faction = ""

                if member_data.life_state == ewcfg.life_state_enlisted:
                    member_data.life_state = ewcfg.life_state_juvenile

                response = "{} has been released from their association with the {}.".format(
                    member.display_name, faction_old)
            member_data.persist()
            await ewrolemgr.updateRoles(client=cmd.client, member=member)

    await ewutils.send_message(
        cmd.client, cmd.message.channel,
        ewutils.formatMessage(cmd.message.author, response))
Пример #7
0
async def pardon(cmd):
    user_data = EwUser(member=cmd.message.author)
    if cmd.mentions_count == 1:
        member = cmd.mentions[0]
        if member.id == cmd.message.author.id:
            member = None

    if member == None:
        response = "Who?"
    else:
        member_data = EwUser(member=member)
        member_data.unban(faction=user_data.faction)

        if member_data.faction == "":
            response = "{} has been allowed to join the {} again.".format(
                member.display_name, user_data.faction)
        else:
            faction_old = member_data.faction
            member_data.faction = ""

            if member_data.life_state == ewcfg.life_state_enlisted:
                member_data.life_state = ewcfg.life_state_juvenile
                member_data.weapon = -1

            response = "{} has been released from their association with the {}.".format(
                member.display_name, faction_old)

        member_poi = ewcfg.id_to_poi.get(member_data.poi)
        if ewmap.inaccessible(user_data=member_data, poi=member_poi):
            member_data.poi = ewcfg.poi_id_downtown
        member_data.persist()
        await ewrolemgr.updateRoles(client=cmd.client, member=member)

    await ewutils.send_message(
        cmd.client, cmd.message.channel,
        ewutils.formatMessage(cmd.message.author, response))
Пример #8
0
async def enlist(cmd):
    resp = await ewcmd.start(cmd=cmd)
    time_now = int(time.time())
    response = ""
    roles_map_user = ewutils.getRoleMap(cmd.message.author.roles)

    if ewcfg.role_juvenile in roles_map_user:
        faction = ""
        if cmd.tokens_count > 1:
            faction = cmd.tokens[1].lower()

        user_data = EwUser(member=cmd.message.author)
        user_slimes = user_data.slimes
        user_is_pvp = (user_data.time_expirpvp > time_now)

        if user_slimes < ewcfg.slimes_toenlist:
            response = "You need to mine more slime to rise above your lowly station. ({}/{})".format(
                user_slimes, ewcfg.slimes_toenlist)
        else:
            if faction == "":
                faction = user_data.faction

            if faction == ewcfg.faction_rowdys:
                user_data.faction = faction
                user_data.persist()

                if user_is_pvp:
                    await cmd.client.replace_roles(
                        cmd.message.author,
                        cmd.roles_map[ewcfg.role_rowdyfuckers],
                        cmd.roles_map[ewcfg.role_rowdyfuckers_pvp])
                else:
                    await cmd.client.replace_roles(
                        cmd.message.author,
                        cmd.roles_map[ewcfg.role_rowdyfuckers])

                response = "Enlisted in the {}.".format(ewcfg.faction_rowdys)
            elif faction == ewcfg.faction_killers:
                user_data.faction = faction
                user_data.persist()

                if user_is_pvp:
                    await cmd.client.replace_roles(
                        cmd.message.author,
                        cmd.roles_map[ewcfg.role_copkillers],
                        cmd.roles_map[ewcfg.role_copkillers_pvp])
                else:
                    await cmd.client.replace_roles(
                        cmd.message.author,
                        cmd.roles_map[ewcfg.role_copkillers])

                response = "Enlisted in the {}.".format(ewcfg.faction_killers)
            else:
                response = "Which faction? Say '{} {}' or '{} {}'.".format(
                    ewcfg.cmd_enlist, ewcfg.faction_killers, ewcfg.cmd_enlist,
                    ewcfg.faction_rowdys)

    elif ewcfg.role_corpse in roles_map_user:
        response = 'You are dead, bitch.'
    else:
        response = "You can't do that right now, bitch."

    # Send the response to the player.
    await cmd.client.edit_message(
        resp, ewutils.formatMessage(cmd.message.author, response))
Пример #9
0
async def enlist(cmd):
    user_data = EwUser(member=cmd.message.author)
    user_slimes = user_data.slimes
    time_now = int(time.time())
    bans = user_data.get_bans()
    vouchers = user_data.get_vouchers()

    if user_data.life_state == ewcfg.life_state_corpse:
        response = "You're dead, bitch."
        return await ewutils.send_message(
            cmd.client, cmd.message.channel,
            ewutils.formatMessage(cmd.message.author, response))

    elif user_slimes < ewcfg.slimes_toenlist:
        response = "You need to mine more slime to rise above your lowly station. ({}/{})".format(
            user_slimes, ewcfg.slimes_toenlist)
        return await ewutils.send_message(
            cmd.client, cmd.message.channel,
            ewutils.formatMessage(cmd.message.author, response))

    if cmd.tokens_count > 1:
        desired_faction = cmd.tokens[1].lower()
    else:
        response = "Which faction? Say '{} {}' or '{} {}'.".format(
            ewcfg.cmd_enlist, ewcfg.faction_killers, ewcfg.cmd_enlist,
            ewcfg.faction_rowdys)
        return await ewutils.send_message(
            cmd.client, cmd.message.channel,
            ewutils.formatMessage(cmd.message.author, response))

    if desired_faction == ewcfg.faction_killers:
        if ewcfg.faction_killers in bans:
            response = "You are banned from enlisting in the {}.".format(
                ewcfg.faction_killers)
            return await ewutils.send_message(
                cmd.client, cmd.message.channel,
                ewutils.formatMessage(cmd.message.author, response))

        elif ewcfg.faction_killers not in vouchers and user_data.faction != ewcfg.faction_killers:
            response = "You need a current gang member's permission to join the {}.".format(
                ewcfg.faction_killers)
            return await ewutils.send_message(
                cmd.client, cmd.message.channel,
                ewutils.formatMessage(cmd.message.author, response))
        elif user_data.life_state == ewcfg.life_state_enlisted and user_data.faction == ewcfg.faction_killers:
            response = "You are already enlisted in the {}! Look, your name is purple! Get a clue, idiot.".format(
                user_data.faction)
            return await ewutils.send_message(
                cmd.client, cmd.message.channel,
                ewutils.formatMessage(cmd.message.author, response))

        elif user_data.faction == ewcfg.faction_rowdys:
            response = "Traitor! You can only {} in the {}, you treacherous cretin. Ask for a {} if you're that weak-willed.".format(
                ewcfg.cmd_enlist, user_data.faction, ewcfg.cmd_pardon)
            return await ewutils.send_message(
                cmd.client, cmd.message.channel,
                ewutils.formatMessage(cmd.message.author, response))

        else:
            response = "Enlisting in the {}.".format(ewcfg.faction_killers)
            user_data.life_state = ewcfg.life_state_enlisted
            user_data.faction = ewcfg.faction_killers
            user_data.time_lastenlist = time_now + ewcfg.cd_enlist
            user_data.persist()
            await ewrolemgr.updateRoles(client=cmd.client,
                                        member=cmd.message.author)

    elif desired_faction == ewcfg.faction_rowdys:
        if ewcfg.faction_rowdys in bans:
            response = "You are banned from enlisting in the {}.".format(
                ewcfg.faction_rowdys)
            return await ewutils.send_message(
                cmd.client, cmd.message.channel,
                ewutils.formatMessage(cmd.message.author, response))
        if ewcfg.faction_rowdys not in vouchers and user_data.faction != ewcfg.faction_rowdys:
            response = "You need a current gang member's permission to join the {}.".format(
                ewcfg.faction_rowdys)
            return await ewutils.send_message(
                cmd.client, cmd.message.channel,
                ewutils.formatMessage(cmd.message.author, response))

        elif user_data.life_state == ewcfg.life_state_enlisted and user_data.faction == ewcfg.faction_rowdys:
            response = "You are already enlisted in the {}! Look, your name is pink! Get a clue, idiot.".format(
                user_data.faction)
            return await ewutils.send_message(
                cmd.client, cmd.message.channel,
                ewutils.formatMessage(cmd.message.author, response))

        elif user_data.faction == ewcfg.faction_killers:
            response = "Traitor! You can only {} in the {}, you treacherous cretin. Ask for a {} if you're that weak-willed.".format(
                ewcfg.cmd_enlist, user_data.faction, ewcfg.cmd_pardon)
            return await ewutils.send_message(
                cmd.client, cmd.message.channel,
                ewutils.formatMessage(cmd.message.author, response))

        else:
            response = "Enlisting in the {}.".format(ewcfg.faction_rowdys)
            user_data.life_state = ewcfg.life_state_enlisted
            user_data.faction = ewcfg.faction_rowdys
            user_data.time_lastenlist = time_now + ewcfg.cd_enlist
            user_data.persist()
            await ewrolemgr.updateRoles(client=cmd.client,
                                        member=cmd.message.author)

    else:
        response = "That's not a valid gang you can enlist in, bitch."

    # Send the response to the player.
    await ewutils.send_message(
        cmd.client, cmd.message.channel,
        ewutils.formatMessage(cmd.message.author, response))
Пример #10
0
async def on_message(message):
	time_now = int(time.time())
	ewcfg.set_client(client)

	""" do not interact with our own messages """
	if message.author.id == client.user.id or message.author.bot == True:
		return

	if message.server != None:
		# Note that the user posted a message.
		active_map = active_users_map.get(message.server.id)
		if active_map == None:
			active_map = {}
			active_users_map[message.server.id] = active_map
		active_map[message.author.id] = True

		# Update player information.
		ewplayer.player_update(
			member = message.author,
			server = message.server
		)

	content_tolower = message.content.lower()
	re_awoo = re.compile('.*![a]+[w]+o[o]+.*')

	# update the player's time_last_action which is used for kicking AFK players out of subzones
	if message.server != None:

		try:
			ewutils.execute_sql_query("UPDATE users SET {time_last_action} = %s WHERE id_user = %s AND id_server = %s".format(
				time_last_action = ewcfg.col_time_last_action
			), (
				int(time.time()),
				message.author.id,
				message.server.id
			))
		except:
			ewutils.logMsg('server {}: failed to update time_last_action for {}'.format(message.server.id, message.author.id))
		
		user_data = EwUser(member = message.author)
		
		statuses = user_data.getStatusEffects()

		if ewcfg.status_strangled_id in statuses:
			strangle_effect = EwStatusEffect(id_status=ewcfg.status_strangled_id, user_data=user_data)
			source = EwPlayer(id_user=strangle_effect.source, id_server=message.server.id)
			response = "You manage to break {}'s garrote wire!".format(source.display_name)
			user_data.clear_status(ewcfg.status_strangled_id)			
			return await ewutils.send_message(client, message.channel, ewutils.formatMessage(message.author, response))

	if message.content.startswith(ewcfg.cmd_prefix) or message.server == None or len(message.author.roles) < 2:
		"""
			Wake up if we need to respond to messages. Could be:
				message starts with !
				direct message (server == None)
				user is new/has no roles (len(roles) < 2)
		"""

		#Ignore users with weird characters in their name
		try:
			message.author.display_name[:3].encode('utf-8').decode('ascii')
		except UnicodeError:
			return await ewutils.send_message(client, message.channel, ewutils.formatMessage(message.author, "We don't take kindly to moon runes around here."))

		# tokenize the message. the command should be the first word.
		try:
			tokens = shlex.split(message.content)  # it's split with shlex now because shlex regards text within quotes as a single token
		except:
			tokens = message.content.split(' ')  # if splitting via shlex doesnt work (odd number of quotes), use the old splitting method so it doesnt give an exception

		tokens_count = len(tokens)
		cmd = tokens[0].lower() if tokens_count >= 1 else ""

		# remove mentions to us
		mentions = list(filter(lambda user : user.id != client.user.id, message.mentions))
		mentions_count = len(mentions)

		# Create command object
		cmd_obj = ewcmd.EwCmd(
			tokens = tokens,
			message = message,
			client = client,
			mentions = mentions
		)

		"""
			Handle direct messages.
		"""
		if message.server == None:
			playermodel = ewplayer.EwPlayer(id_user = message.author.id)
			usermodel = EwUser(id_user=message.author.id, id_server= playermodel.id_server)
			poi = ewcfg.id_to_poi.get(usermodel.poi)
			# Direct message the player their inventory.
			if ewitem.cmd_is_inventory(cmd):
				return await ewitem.inventory_print(cmd_obj)
			elif cmd == ewcfg.cmd_inspect:
				return await ewitem.item_look(cmd_obj)
			elif poi.is_apartment:
				return await ewapt.aptCommands(cmd=cmd_obj)
			else:
				time_last = last_helped_times.get(message.author.id, 0)

				# Only send the help doc once every thirty seconds. There's no need to spam it.
				if (time_now - time_last) > 30:
					last_helped_times[message.author.id] = time_now
					await ewutils.send_message(client, message.channel, ewcfg.generic_help_response)

			# Nothing else to do in a DM.
			return

		# assign the appropriate roles to a user with less than @everyone, faction, location
		if len(message.author.roles) < 3:
			await ewrolemgr.updateRoles(client = client, member = message.author)

		user_data = EwUser(member = message.author)
		if user_data.arrested:
			return

		mutations = user_data.get_mutations()
		# Scold/ignore offline players.
		if message.author.status == discord.Status.offline:

			if ewcfg.mutation_id_chameleonskin not in mutations or cmd not in ewcfg.offline_cmds:

				response = "You cannot participate in the ENDLESS WAR while offline."
    
				return await ewutils.send_message(client, message.channel, ewutils.formatMessage(message.author, response))


		if user_data.time_lastoffline > time_now - ewcfg.time_offline:

			if ewcfg.mutation_id_chameleonskin not in mutations or cmd not in ewcfg.offline_cmds:
				response = "You are too paralyzed by ENDLESS WAR's judgemental stare to act."

				return await ewutils.send_message(client, message.channel, ewutils.formatMessage(message.author, response))

		# Ignore stunned players
		if ewcfg.status_stunned_id in statuses:
			return

		# Check the main command map for the requested command.
		global cmd_map
		cmd_fn = cmd_map.get(cmd)

		if user_data.poi in ewcfg.tutorial_pois:	
			return await ewdungeons.tutorial_cmd(cmd_obj)

		elif cmd_fn != None:
			# Execute found command
			return await cmd_fn(cmd_obj)

		# FIXME debug
		# Test item creation
		elif debug == True and cmd == (ewcfg.cmd_prefix + 'createtestitem'):
			item_id = ewitem.item_create(
				item_type = 'medal',
				id_user = message.author.id,
				id_server = message.server.id,
				item_props = {
					'medal_name': 'Test Award',
					'medal_desc': '**{medal_name}**: *Awarded to Krak by Krak for testing shit.*'
				}
			)

			ewutils.logMsg('Created item: {}'.format(item_id))
			item = EwItem(id_item = item_id)
			item.item_props['test'] = 'meow'
			item.persist()

			item = EwItem(id_item = item_id)

			await ewutils.send_message(client, message.channel, ewutils.formatMessage(message.author, ewitem.item_look(item)))

		# Creates a poudrin
		elif debug == True and cmd == (ewcfg.cmd_prefix + 'createpoudrin'):
			for item in ewcfg.item_list:
				if item.context == "poudrin":
					ewitem.item_create(
						item_type = ewcfg.it_item,
						id_user = message.author.id,
						id_server = message.server.id,
						item_props = {
							'id_item': item.id_item,
							'context': item.context,
							'item_name': item.str_name,
							'item_desc': item.str_desc,
						}
					),
					ewutils.logMsg('Created item: {}'.format(item.id_item))
					item = EwItem(id_item = item.id_item)
					item.persist()
			else:
				pass

			await ewutils.send_message(client, message.channel, ewutils.formatMessage(message.author, "Poudrin created."))

		# Gives the user some slime
		elif debug == True and cmd == (ewcfg.cmd_prefix + 'getslime'):
			user_data = EwUser(member = message.author)
			user_initial_level = user_data.slimelevel

			response = "You get 100,000 slime!"

			levelup_response = user_data.change_slimes(n = 100000)

			was_levelup = True if user_initial_level < user_data.slimelevel else False

			if was_levelup:
				response += " {}".format(levelup_response)

			user_data.persist()
			await ewutils.send_message(client, message.channel, ewutils.formatMessage(message.author, response))
		elif debug == True and cmd == (ewcfg.cmd_prefix + 'getcoin'):
			user_data = EwUser(member=message.author)
			user_data.change_slimecoin(n=1000000000, coinsource=ewcfg.coinsource_spending)

			response = "You get 1,000,000,000 slimecoin!"

			user_data.persist()
			await ewutils.send_message(client, message.channel, ewutils.formatMessage(message.author, response))

		# Deletes all items in your inventory.
		elif debug == True and cmd == (ewcfg.cmd_prefix + 'clearinv'):
			user_data = EwUser(member = message.author)
			ewitem.item_destroyall(id_server = message.server.id, id_user = message.author.id)
			response = "You destroy every single item in your inventory."
			user_data.persist()
			await ewutils.send_message(client, message.channel, ewutils.formatMessage(message.author, response))

		elif debug == True and cmd == (ewcfg.cmd_prefix + 'createapple'):
			item_id = ewitem.item_create(
				id_user = message.author.id,
				id_server = message.server.id,
				item_type = ewcfg.it_food,
				item_props = {
					'id_food': "direapples",
					'food_name': "Dire Apples",
					'food_desc': "This sure is a illegal Dire Apple!",
					'recover_hunger': 500,
					'str_eat': "You chomp into this illegal Dire Apple.",
					'time_expir': int(time.time() + ewcfg.farm_food_expir)
				}
			)

			ewutils.logMsg('Created item: {}'.format(item_id))
			item = EwItem(id_item = item_id)
			item.item_props['test'] = 'meow'
			item.persist()

			await ewutils.send_message(client, message.channel, ewutils.formatMessage(message.author, "Apple created."))

		elif debug == True and cmd == (ewcfg.cmd_prefix + 'createhat'):
			patrician_rarity = 20
			patrician_smelted = random.randint(1, patrician_rarity)
			patrician = False

			if patrician_smelted == 1:
				patrician = True

			items = []

			for cosmetic in ewcfg.cosmetic_items_list:
				if patrician and cosmetic.rarity == ewcfg.rarity_patrician:
					items.append(cosmetic)
				elif not patrician and cosmetic.rarity == ewcfg.rarity_plebeian:
					items.append(cosmetic)

			item = items[random.randint(0, len(items) - 1)]

			item_id = ewitem.item_create(
				item_type = ewcfg.it_cosmetic,
				id_user = message.author.id,
				id_server = message.server.id,
				item_props = {
					'id_cosmetic': item.id_cosmetic,
					'cosmetic_name': item.str_name,
					'cosmetic_desc': item.str_desc,
					'rarity': item.rarity,
					'adorned': 'false'
				}
			)

			ewutils.logMsg('Created item: {}'.format(item_id))
			item = EwItem(id_item = item_id)
			item.item_props['test'] = 'meow'
			item.persist()

			await ewutils.send_message(client, message.channel, ewutils.formatMessage(message.author, "Hat created."))

		elif debug == True and cmd == (ewcfg.cmd_prefix + 'createfood'):
			item = ewcfg.food_list[random.randint(0, len(ewcfg.food_list) - 1)]

			item_id = ewitem.item_create(
				item_type = ewcfg.it_food,
				id_user = message.author.id,
				id_server = message.server.id,
				item_props = {
					'id_food': item.id_food,
					'food_name': item.str_name,
					'food_desc': item.str_desc,
					'recover_hunger': item.recover_hunger,
					'str_eat': item.str_eat,
					'time_expir': item.time_expir
				}
			)

			ewutils.logMsg('Created item: {}'.format(item_id))
			item = EwItem(id_item = item_id)
			item.item_props['test'] = 'meow'
			item.persist()

			await ewutils.send_message(client, message.channel, ewutils.formatMessage(message.author, "Food created."))

		# FIXME debug
		# Test item deletion
		elif debug == True and cmd == (ewcfg.cmd_prefix + 'delete'):
			items = ewitem.inventory(
				id_user = message.author.id,
				id_server = message.server.id
			)

			for item in items:
				ewitem.item_delete(
					id_item = item.get('id_item')
				)

			await ewutils.send_message(client, message.channel, ewutils.formatMessage(message.author, 'ok'))

		# AWOOOOO
		elif re_awoo.match(cmd):
			return await ewcmd.cmd_howl(cmd_obj)

		# Debug command to override the role of a user
		elif debug == True and cmd == (ewcfg.cmd_prefix + 'setrole'):

			response = ""

			if mentions_count == 0:
				response = 'Set who\'s role?'
			else:
				roles_map = ewutils.getRoleMap(message.server.roles)
				role_target = tokens[1]
				role = roles_map.get(role_target)

				if role != None:
					for user in mentions:
						try:
							await client.replace_roles(user, role)
						except:
							ewutils.logMsg('Failed to replace_roles for user {} with {}.'.format(user.display_name, role.name))

					response = 'Done.'
				else:
					response = 'Unrecognized role.'

			await ewutils.send_message(client, cmd.message.channel, ewutils.formatMessage(message.author, response))
			
		elif debug == True and cmd == (ewcfg.cmd_prefix + 'getrowdy'):
			response = "You get rowdy. F**k. YES!"
			user_data = EwUser(member=message.author)
			user_data.life_state = ewcfg.life_state_enlisted
			user_data.faction = ewcfg.faction_rowdys
			user_data.time_lastenlist = time_now + ewcfg.cd_enlist
			user_data.persist()
			await ewutils.send_message(client, message.channel, ewutils.formatMessage(message.author, response))
		
		elif debug == True and cmd == (ewcfg.cmd_prefix + 'getkiller'):
			response = "You uh... 'get' killer. Sure."
			user_data = EwUser(member=message.author)
			user_data.life_state = ewcfg.life_state_enlisted
			user_data.faction = ewcfg.faction_killers
			user_data.time_lastenlist = time_now + ewcfg.cd_enlist
			user_data.persist()
			await ewutils.send_message(client, message.channel, ewutils.formatMessage(message.author, response))
			
		# Toggles rain on and off
		elif debug == True and cmd == (ewcfg.cmd_prefix + 'toggledownfall'):
			market_data = EwMarket(id_server=message.server.id)
			
			if market_data.weather == ewcfg.weather_bicarbonaterain:
				newweather = ewcfg.weather_sunny
				
				market_data.weather = newweather
				response = "Bicarbonate rain turned OFF. Weather was set to {}.".format(newweather)
			else:
				market_data.weather = ewcfg.weather_bicarbonaterain
				response = "Bicarbonate rain turned ON."
				
			market_data.persist()
			await ewutils.send_message(client, message.channel, ewutils.formatMessage(message.author, response))

		elif debug == True and cmd == (ewcfg.cmd_prefix + 'dayforward'):
			market_data = EwMarket(id_server=message.server.id)

			market_data.day += 1
			market_data.persist()

			response = "Time has progressed 1 day forward manually."
			
			if ewutils.check_fursuit_active(market_data.id_server):
				response += "\nIt's a full moon!"
				
			await ewutils.send_message(client, message.channel, ewutils.formatMessage(message.author, response))
			
		elif debug == True and cmd == (ewcfg.cmd_prefix + 'hourforward'):
			market_data = EwMarket(id_server=message.server.id)
			
			market_data.clock += 1
			response = "Time has progressed 1 hour forward manually."

			if market_data.clock >= 24 or market_data.clock < 0:
				market_data.clock = 0
				market_data.day += 1
				response += "\nMidnight has come. 1 day progressed forward."
				
			if ewutils.check_fursuit_active(market_data.id_server):
				response += "\nIt's a full moon!"
				
			market_data.persist()
			await ewutils.send_message(client, message.channel, ewutils.formatMessage(message.author, response))
			
			
		# didn't match any of the command words.
		else:
			""" couldn't process the command. bail out!! """
			""" bot rule 0: be cute """
			randint = random.randint(1,3)
			msg_mistake = "ENDLESS WAR is growing frustrated."
			if randint == 2:
				msg_mistake = "ENDLESS WAR denies you his favor."
			elif randint == 3:
				msg_mistake = "ENDLESS WAR pays you no mind."

			msg = await ewutils.send_message(client, cmd_obj.message.channel, msg_mistake)
			await asyncio.sleep(2)
			try:
				await client.delete_message(msg)
			except:
				pass

	elif content_tolower.find(ewcfg.cmd_howl) >= 0 or content_tolower.find(ewcfg.cmd_howl_alt1) >= 0 or re_awoo.match(content_tolower):
		""" Howl if !howl is in the message at all. """
		return await ewcmd.cmd_howl(ewcmd.EwCmd(
			message = message,
			client = client
		))