def command_setup(self, event): if not event.guild: return event.msg.reply( ':warning: this command can only be used in servers') # Make sure we're not already setup if event.guild.id in self.guilds: return event.msg.reply(':warning: this server is already setup') global_admin = rdb.sismember('global_admins', event.author.id) # Make sure this is the owner of the server if not global_admin: if not event.guild.owner_id == event.author.id: return event.msg.reply( ':warning: only the server owner can setup rowboat') # Make sure we have admin perms m = event.guild.members.select_one(id=self.state.me.id) if not m.permissions.administrator and not global_admin: return event.msg.reply( ':warning: bot must have the Administrator permission') guild = Guild.setup(event.guild) rdb.srem(GUILDS_WAITING_SETUP_KEY, str(event.guild.id)) self.guilds[event.guild.id] = guild event.msg.reply(':ok_hand: successfully loaded configuration')
def guild_unwhitelist(self, event, guild): rdb.srem(GUILDS_WAITING_SETUP_KEY, str(guild)) event.msg.reply( 'Ok, I\'ve made sure guild %s is no longer in the whitelist' % guild) Guild.update(whitelist=[]).where( str(Guild.guild_id) == str(guild)).execute()
def rmv_global_admin(user_id): from rowboat.redis import rdb from rowboat.models.user import User init_db(ENV) rdb.srem('global_admins', user_id) User.update(admin=False).where(User.user_id == user_id).execute() print 'Ok, removed {} as a global admin'.format(user_id)
def wait_for_actions(self): ps = rdb.pubsub() ps.subscribe('actions') for item in ps.listen(): if item['type'] != 'message': continue data = json.loads(item['data']) if data['type'] == 'GUILD_UPDATE' and data['id'] in self.guilds: with self.send_control_message() as embed: embed.title = u'Reloaded config for {}'.format( self.guilds[data['id']].name) self.log.info(u'Reloading guild %s', self.guilds[data['id']].name) # Refresh config, mostly to validate try: config = self.guilds[data['id']].get_config(refresh=True) # Reload the guild entirely self.guilds[data['id']] = Guild.with_id(data['id']) # Update guild access self.update_rowboat_guild_access() # Finally, emit the event self.emitter.emit('GUILD_CONFIG_UPDATE', self.guilds[data['id']], config) except: self.log.exception(u'Failed to reload config for guild %s', self.guilds[data['id']].name) continue elif data['type'] == 'RESTART': self.log.info('Restart requested, signaling parent') os.kill(os.getppid(), signal.SIGUSR1) elif data['type'] == 'GUILD_DELETE': name = self.guilds[data['id']].name if self.guilds.has_key( data['id']) else Guild.with_id(data['id']).name with self.send_control_message() as embed: embed.color = 0xff6961 embed.title = u'Guild Force Deleted {}'.format(name, ) try: self.log.info(u'Leaving guild %s', name) self.bot.client.api.users_me_guilds_delete( guild=data['id']) except: self.log.info(u'Cannot leave guild %s, bot not in guild', name) finally: self.log.info(u'Disabling guild %s', name) Guild.update(enabled=False).where( Guild.guild_id == data['id']).execute() self.log.info(u'Unwhilelisting guild %s', name) rdb.srem(GUILDS_WAITING_SETUP_KEY, str(data['id']))
def command_setup(self, event): if not event.guild: raise CommandFail('This command can only be used in servers') global_admin = rdb.sismember('global_admins', event.author.id) # Make sure this is the owner of the server if not global_admin: if not event.guild.owner_id == event.author.id: raise CommandFail('Only the server owner can setup speedboat') # Make sure we have admin perms m = event.guild.members.select_one(id=self.state.me.id) if not m.permissions.administrator and not global_admin: raise CommandFail('Bot must have the Administrator permission') guild = Guild.setup(event.guild) rdb.srem(GUILDS_WAITING_SETUP_KEY, str(event.guild.id)) self.guilds[event.guild.id] = guild raise CommandSuccess('Successfully loaded configuration')
def guild_unwhitelist(self, event, guild): rdb.srem(GUILDS_WAITING_SETUP_KEY, str(guild)) event.msg.reply( 'Ok, I\'ve made sure guild %s is no longer in the whitelist' % guild)
def guild_unwhitelist(self, event, guild): rdb.srem(GUILDS_WAITING_SETUP_KEY, str(guild)) raise CommandSuccess( 'Ok, I\'ve made sure guild %s is no longer in the whitelist' % guild)