def _do_execute(self, command): if len(command.args) == 0: seed = seedgen.get_new_seed() yield from self._sm.client.send_message(command.channel, 'Seed generated for {0}: {1}'.format(command.author.mention, seed)) elif len(command.args) == 1: try: num_seeds = max(0, min(MAX_NUM_SEEDS_TO_GENERATE, int(command.args[0]))) seedstr = '' for i in range(num_seeds): seedstr += '{}, '.format(seedgen.get_new_seed()) if seedstr: yield from self._sm.client.send_message(command.author, 'Generated {0} seeds: {1}.'.format(num_seeds, seedstr[:-2])) except ValueError: pass
def _do_execute(self, command): if self._room.is_race_admin(command.author): if self._room.race.race_info.seeded and not self._room.race.race_info.seed_fixed: self._room.race.race_info.seed = seedgen.get_new_seed() yield from self._room.write('Changed seed to {}.'.format(self._room.race.race_info.seed)) yield from self._room.update_leaderboard() else: yield from self._room.write('Cannot reseed this race; it is not a randomly seeded race. Use `.changerules -s` to change this.')
def race_channel_command(self, room_channel, message): args = message.content.split() command = args.pop(0).replace(config.BOT_COMMAND_PREFIX, '', 1) read_permit = discord.Permissions.none() read_permit.read_messages = True #.add : Add users if command == 'add': mentioned_user = False for member in message.mentions: asyncio.ensure_future(self._client.edit_channel_permissions(room_channel, member, allow=read_permit)) mentioned_user = True if not mentioned_user: not_found = '' for username in args: found_user = False for member in self._server.members: if member.name == username: asyncio.ensure_future(self._client.edit_channel_permissions(room_channel, member, allow=read_permit)) found_user = True if not found_user: not_found += username + ' ' if not_found: yield from self._write(room_channel, "Couldn't find users: {}".format(not_found)) #.cleanup : Delete this room elif command == 'cleanup': room_list = [room for room in self._room_list if room != room_channel] asyncio.ensure_future(self._client.delete_channel(room_channel)) #.randomseed : Generate a new random seed elif command == 'randomseed': seed = seedgen.get_new_seed() yield from self._write(message.channel, 'Seed generated: {1}'.format(message.author.mention, seed)) #.remove : Remove users elif command == 'remove': mentioned_user = False for member in message.mentions: asyncio.ensure_future(self._client.edit_channel_permissions(room_channel, member, deny=read_permit)) mentioned_user = True if not mentioned_user: not_found = '' for username in args: found_user = False for member in self._server.members: if member.name == username: asyncio.ensure_future(self._client.edit_channel_permissions(room_channel, member, deny=read_permit)) found_user = True if not found_user: not_found += username + ' ' if not_found: self._write(room_channel, "Couldn't find users: {}".format(not_found))
def parse_args_modify(args, race_info): set_seed = False #keep track of whether we've found args for each field set_seeded = False set_char = False set_desc = False set_sd = False set_fp = False while args: next_cmd_args = clparse.pop_command(args) if not next_cmd_args: next_cmd_args.append(args[0]) args.pop(0) if _parse_seed(next_cmd_args, race_info): if set_seed: return None else: set_seed = True elif _parse_seeded(next_cmd_args, race_info): if set_seeded: return None else: set_seeded = True elif _parse_char(next_cmd_args, race_info): if set_char: return None else: set_char = True ## elif parse_sudden_death(args, race_info): ## if set_sd: ## return False ## else: ## set_seeded = True ## elif parse_flagplant(args, race_info): ## if set_fp: ## return False ## else: ## set_seeded = True elif _parse_desc(next_cmd_args, race_info): if set_desc: return None else: set_desc = True else: return None if race_info.seeded: race_info.seed_fixed = set_seed if not set_seed: race_info.seed = seedgen.get_new_seed() elif set_seed and set_seeded: #user set a seed and asked for unseeded, so throw up our hands return None elif set_seed: race_info.seeded = True return race_info
def get_new_raceinfo(): to_return = RaceInfo() to_return.seed_fixed = False to_return.seeded = True to_return.character = 'Cadence' to_return.descriptor = 'Condor Race' to_return.sudden_death = False to_return.flagplant = False to_return.seed = seedgen.get_new_seed() return to_return
def copy(self): the_copy = RaceInfo() the_copy.seed = self.seed if self.seed_fixed else seedgen.get_new_seed() the_copy.seed_fixed = self.seed_fixed the_copy.seeded = self.seeded the_copy.character = self.character the_copy.descriptor = self.descriptor the_copy.sudden_death = self.sudden_death the_copy.flagplant = self.flagplant return the_copy
def get_seed(self, daily_number): params = (daily_number, self._type.id) for row in self.necrodb.get_daily_seed(params): return row[0] #if we made it here, there was no entry in the table, so make one today_seed = seedgen.get_new_seed() values = (daily_number, self._type.id, today_seed, 0,) self.necrodb.create_daily(values) return today_seed
def register_message(self, daily_number, message_id): params = (daily_number, self._type.id) for row in self.necrodb.get_daily_seed(params): #if here, there was an entry in the table, so we will update it values = (message_id, daily_number, self._type.id) self.necrodb.update_daily(values) return #else, there was no entry, so make one today_seed = seedgen.get_new_seed() values = (daily_number, self._type.id, today_seed, message_id,) self.necrodb.create_daily(values)
def register_message(self, daily_number, message_id): param = (daily_number, self._type.id) for row in self._db_conn.execute("SELECT seed FROM daily_data WHERE daily_id=? AND type=?", param): #if here, there was an entry in the table, so we will update it values = (message_id, daily_number, self._type.id) self._db_conn.execute("UPDATE daily_data SET msg_id=? WHERE daily_id=? AND type=?", values) self._db_conn.commit() return #else, there was no entry, so make one today_seed = seedgen.get_new_seed() values = (daily_number, self._type.id, today_seed, message_id,) self._db_conn.execute("INSERT INTO daily_data (daily_id, type, seed, msg_id) VALUES (?,?,?,?)", values) self._db_conn.commit()
def get_seed(self, daily_number): db_cursor = self._db_conn.cursor() param = (daily_number, self._type.id) db_cursor.execute("SELECT seed FROM daily_data WHERE daily_id=? AND type=?", param) for row in db_cursor: return row[0] #if we made it here, there was no entry in the table, so make one today_seed = seedgen.get_new_seed() values = (daily_number, self._type.id, today_seed, 0,) db_cursor.execute("INSERT INTO daily_data (daily_id, type, seed, msg_id) VALUES (?,?,?,?)", values) self._db_conn.commit() return today_seed
def main_channel_command(self, message): args = message.content.split() command = args.pop(0).replace(config.BOT_COMMAND_PREFIX, '', 1) #.help : Quick help reference if command == 'help': bot_cmd_str = 'In this channel only:\n' yield from self._write_now(message.channel, bot_cmd_str + HELP_BOTCOMMANDS) race_chnl_str = 'In race channels only:\n' yield from self._write_now(message.channel, race_chnl_str + HELP_RACE_CHANNELS) #.make : Create race room elif command == 'make': yield from self.make_room() #.randomseed : Generate a new random seed elif command == 'randomseed': seed = seedgen.get_new_seed() yield from self._write(message.channel, 'Seed generated: {1}'.format(message.author.mention, seed)) elif command == 'info': yield from self._write(message.channel, CffdBot.infostr())